题目大意
题目原文:http://uva.onlinejudge.org/external/9/913.pdf
背景:
Joana喜歡玩關於奇數的遊戲。有一天,她開始寫,每列都是奇數,如下表。
1
3 5 7
9 11 13 1517
19 21 23 25 27 29 31
...
在某一列Joana寫下了55個奇數數字,你可以看出該列最後3個數字的和嗎? 給你一個數字N,代表某一列有N個奇數數字,你的任務是把該列最後三個數加起來。
在某一列Joana寫下了55個奇數數字,你可以看出該列最後3個數字的和嗎? 給你一個數字N,代表某一列有N個奇數數字,你的任務是把該列最後三個數加起來。
输入
输入含有多组测试数据。
每组测试数据一列,有一个数字 N,表示某一列有 N 个奇数数字(1 < N < 1000000000)。
输出
对每组测试数据,输出该列的最后三个数字的和。本问题中保证三个数字的和一定小于2的63次方。
Sample Input
3 5 7
Sample Output
15 45 87
算法:
我的思路是找到下一行的头一个数字,然后往回算。
代码:
这里附上我的代码,你可以去这里提交你的代码验证你的代码是否正确。
View Code
#include<stdio.h> int main(void) { long long n,a,b,c[3],sum; while(scanf("%lld",&n)!=EOF) { sum=0; b=(n+1)/2; a=(b+b*(b-1))*2+1; c[0]=a-2;c[1]=a-4;c[2]=a-6; sum=c[0]+c[1]+c[2]; printf("%lld\n",sum); } return 0; }