丢失的人(good)

火星足球赛上, 所有的队员的背后都有一个唯一的号码; 号码编号是从1开始, 最大的号码等于总人数;有2个队员出现了意外, 不能参加比赛; 你所能得到的信息就是 原来的总人数, 现在剩下的人的背后的号码的总和, 以及他们背后的号码的 平方的总和; 你要做的就是去发现那2个队员的背后号码是什么。

每一行输入三个数, N, S, PS(三个数都小2^32); 分别表示原来的总人数,现在剩下的人的背后的号码的总和,号码 的平方的总和; 每个数之后有一个空格, 最后那个数之后没有空格;

把出意外的2个队员的号码输出, 从小到大排列;对每一个输入, 每一行打印一个输出, 输出的2个数之间要有一个空格;最后那个数之后没空格;

 

Sample Input

65 2059 89959
151 11258 1133002
156 12083 1256817

Sample Output

41 45
75 143
20 143
#include<stdio.h>
#include<math.h>
int totalSum(int n)
{
 int i,sum=0;
 for(i=1;i<=n;i++)
 {
  sum+=i;
 }
 return sum;
}
int powSum(int m)
{
 int i,powsum=0;
 for(i=1;i<=m;i++)
 {
  powsum+=pow(i,2);
 }
 return powsum;
}
int main()
{
 int n,s,ps,num1,num2,temp;
 while(scanf("%d %d %d",&n,&s,&ps)!=EOF)
 {
  for(num1=1;num1<=n;num1++)
   for(num2=1;num2<=n;num2++)
            if((num1+num2)==(totalSum(n)-s)&&(pow(num1,2)+pow(num2,2))==(powSum(n)-ps)&&(num1<num2))
         printf("%d %d\n",num1,num2);
 }
 return 0;
}
 
 
#include <stdio.h>   
#include <math.h>   
int main()   
{   
    int N,S,PS;   
    int a,b,sum=0,t=0,m=0,n=0,i;   
    while(3==scanf("%d %d %d",&N,&S,&PS))   
    {   
        for(i=1;i<=N;i++)   
        {   
            sum=sum+i;   
        }   
        for(i=1;i<=N;i++)   
        {   
            t=t+i*i;   
        }   
        m=sum-S;   
        n=(int) sqrt(2*(t-PS)-(sum-S)*(sum-S));   
        a=(m+n)/2;   
        b=(m-n)/2;   
        printf("%d %d\n",a>b?b:a,a>b?a:b);   
        sum=0;   
        t=0;   
        m=0;   
        n=0;   
    }   
    return 0;   
}
 
 
 
#include<stdio.h> 
int main(void) 
{ 
    unsigned int i,j,n,s,ps,sum1,sum2; 
    while(scanf("%u%u%u",&n,&s,&ps)!=EOF) 
    { 
        for(sum1=sum2=0,i=1;i<=n;i++) 
        { 
            sum1+=i; 
            sum2+=i*i; 
        } 
        for(i=1;i<=n;i++) 
        {     
            j=sum1-s-i; 
            if(i*i+j*j==sum2-ps) 
            { 
                printf("%u %u\n",i,j); 
                break; 
            } 
        } 
    } 
    return 0; 
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值