您的位置:首页 > 其它

一月17日新生冬季练习赛解题报告F.Play Game 1

2014-01-19 00:23 176 查看
看到F题彭彪写的解题报告想死的心都有

数太少了 随便投机取巧都能过 作死啊

不过值得注意的是等比数列不能相除 分母不能能为零 否则会re

F.Play Game 1

Time Limit: 1000 MS

Memory Limit: 32768 K

Total Submit: 279 (78 users)

Total Accepted: 62 (62 users)

Special Judge: No

Description

小S和小O在玩一个游戏:小S给小O一组有规律的整数,而且只给出前5项,让他求出后面5项。比如:1,2,3,4,5,__,__,__,__,__。显然这是等差数列,所以答案应该是6,7,8,9,10。为了简化题目,老师规定规律只有三种:等差数列、等比数列、斐波那契数列(f[i]=f[i-2]+f[i-1]);且公差、公比均为整数,所有出现的数字不会超出 int 范围。

Input

多组输入数据,每组数据只有5个数,正好5个数,保证不会超出int。

Output

如果能找到符合条件的规律,则输出5个整数,代表后5项的值。

否则,请输出”None”。(引号不用输出)。

Sample Input

1 2 3 4 5

2 3 5 8 13

Sample Output

6 7 8 9 10

21 34 55 89 144

Hint

每个数字之后都有空格,囧。

#include<stdio.h>

#include<string.h>

#include<math.h>

#include<algorithm>

using namespace std;

int main()

{

int i,a[10];

while (~scanf("%d %d %d %d %d",&a[0],&a[1],&a[2],&a[3],&a[4]))

{

int flag=1;

if (a[0]+a[1]==a[2]&&a[1]+a[2]==a[3]&&a[2]+a[3]==a[4])

{

for (i=5; i<10; i++)

{

a[i]=a[i-1]+a[i-2];

printf("%d",a[i]);

if (flag)

printf(" ");

flag++;

}

}

else if (a[0]+a[2]==2*a[1]&&a[1]+a[3]==2*a[2]&&a[2]+a[4]==2*a[3])

{

int d=a[1]-a[0];

for (i=5; i<10; i++)

{

a[i]=a[i-1]+d;

printf("%d",a[i]);

if (flag)

printf(" ");

flag++;

}

}

else if (a[0]*a[2]==a[1]*a[1]&&a[1]*a[3]==a[2]*a[2]&&a[2]*a[4]==a[3]*a[3])

{

int d=a[1]/a[0];

for (i=5; i<10; i++)

{

a[i]=a[i-1]*d;

printf("%d",a[i]);

if (flag)

printf(" ");

flag++;

}

}

else

printf("None");

puts("");

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: