非非.Net的个人博客

岂能因声音微小而不呐喊

导航

2010网易有道编程挑战赛--练习赛

去年参加了网易公司的“有道难题”编程大赛,当时是在Topcoder平台举行,由于当时自己第一次参加这样的比赛连资格赛都没有过,2个题目完成一个,剩下另一个时间已经来不及了,今年网易公司又举行了“有道难题”编程大赛,我再次报名了,这次的目标争取过资格赛吧。看了一下这次的练习赛题目,感觉不是太难,由于错过了练习赛比赛的时间,我将自己的答案写在这里,供大家参考一下吧,个人水平有限,如有错误或更好的方法,请指正。谢谢!

题目A: A + B

 

描述
计算a加b。
输入
一行,用空格分开的两个整数a和b。其中0≤a, b≤10000。
输出
一个整数,为a加b的和。
样例输入
1 2
样例输出
3
答案(GNU C)
#include <stdio.h>
int main()
{
    
int a,b;
    scanf(
"%d %d",&a, &b);
    printf(
"%d\n",a+b);
    
return 0;
}

题目B:Power

 

描述
计算a的b次方对9907取模的值。
输入
第一行有一个正整数T,表示有T组测试数据。
接下来T行,每行是一组测试数据,包含两个整数a和b。
其中T<=10000, 0 <=a,b < 2^31。
输出
有T行,依次输出每组数据的结果。
样例输入
3
1 2
2 3
3 4
样例输出
1
8
81
答案(GNU C)
代码
#include <stdio.h>
#include 
<math.h> 

int main()
{
    
int length, i, a, b, z;
    scanf(
"%d",&length);  //get length
    int r[length];  //result array
    for(i=0;i<length;i++)
    {
        scanf(
"%d %d"&a, &b);
        z 
= pow(a,b);
        r[i] 
= z % 9907;    
    }
    
for(i=0;i<length;i++)
    {
        printf(
"%d\n",r[i]);  //output result
    }
    
return 0;
}

题目C:Sibonacci

 

描述
菲波那切数列可以用下列的式子表示:
f(1)=1
f(2)=1
f(n)=f(n-1)+f(n-2) (n>=3)

现在我们根据这个规则定义另一种数列 命名为"辛波那切数列", 它是这样定义的:
s(x)=0 (x<0)
s(x)=1 (0<=x<1)
s(x)=s(x-1)+s(x-3.14) (x>=1)

现在需要计算出s(x) MOD 1000000007的值。
输入
第一行有一个正整数T表示有T组测试数据。
接下来T行,每行包含一个数x。
其中 T<=10000, -1000.0<=x<=1000.0
输出
有T行,依次输出每组数据的结果。
样例输入
3
-1
0.667
3.15
样例输出
0
1
2
答案(GNU C)
代码
#include <stdio.h>
#include 
<math.h> 

float sibonacci(float x)
{
    
return (x<0)? 0 : (0 <= x && x < 1? 1 : sibonacci(x-1+ sibonacci(x-3.14);
}

int main()
{
    
int length, i;
    
float z, x;
    scanf(
"%d",&length);  //get length
    int r[length];  //result array
    for(i=0;i<length;i++)
    {
        scanf(
"%f"&x);
        z 
= sibonacci(x);
        r[i] 
= fmod(z,1000000007);    
    }
    
for(i=0;i<length;i++)
    {
        printf(
"%d\n",r[i]);  //output result
    }
    
return 0;
}

<br/ />如果有任何问题希望与我交流。

posted on 2010-05-25 15:49  非非.Net  阅读(1668)  评论(7编辑  收藏  举报