Problem G: 求余数
Problem G: 求余數(shù)
Time Limit: 1 Sec??Memory Limit: 128 MB
Submit: 2437??Solved: 666
Description
?現(xiàn)在有n(1 <= n <= 4000000000 )個數(shù)按遞推排列,其中第一個數(shù)是0,第二個數(shù)是2,并且從第二個數(shù)起每個數(shù)的三倍都等于前后兩個數(shù)之和。問第n個數(shù)被6除所得的余數(shù)是多少?
Input
?先輸入一個整數(shù)t,表示有t組測試數(shù)據(jù),然后是t行,每行輸入一個整數(shù)n
Output
對于每組數(shù)據(jù)輸出1行,輸出余數(shù)
Sample Input
2 1 2Sample Output
0 2HINT
第一眼看過去這道題數(shù)據(jù)就太大了,輸入用字符用atoi轉(zhuǎn)的話也是放不下。其實這道題數(shù)據(jù)太龐大并且是遞推的話優(yōu)先找規(guī)律,這題考點不太會在數(shù)據(jù)存放。
我們來看? 0 2 6 16 42 110 288 754 這8個按遞推出來的數(shù)據(jù)%6會是什么結(jié)果
? ? ? ? ? ? ? ? 0? 2? 0? 4? 0? 2 ?? 0 ? ?? 4 ?? 是不是和初中做過的規(guī)律題很像?這樣就可以代碼實現(xiàn)了。
代碼:
#include<stdio.h>
int a[5]={0,0,2,0,4};
int main(void)
{
?? ?long long int n;int t;
?? ?while(scanf("%d",&t)!=EOF)
?? ?{
?? ? for(int i=0;i<t;i++)
?? ? ?{
?? ??? ?scanf("%lld",&n);
?? ??? ?if(n%4==0)
?? ??? ?printf("4\n");
?? ??? ?else if(n%4!=0)
?? ??? ?printf("%d\n",a[n%4]);
?? ? ?}
?? ?}
return 0;?? ??
}
?
總結(jié)
以上是生活随笔為你收集整理的Problem G: 求余数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Adobe Flash Professi
- 下一篇: Speedoffice(excel)如何