3 1 1 2 2 2 5
15 300 900
打表。。。。这题代码量比较少,但还是很考验找规律能力的,而且!!!
眼力必须好啊!
下面是我的打表代码,输入n代表末尾n个0:
#include <iostream> using namespace std; int pp(int n) { int ans=1; for(int i=0;i<n;i++) ans*=10; return ans; } int f[100000000]={0}; int main() { int n; while(cin>>n) { int p0=pp(n),p1=pp(n+1),t=1; f[1]=1; for(int i=2;i<100000000;i++) { f[i]=(f[i-1]+f[i-2])%p1; if(f[i]%p0==0&&f[i]!=0) { cout<<i<<"th feibo "<<t++<<"th number"<<endl; } if(t==50)break; } } return 0; }
而2是到第4个数增量有了变化!(说实话真的很难仔细一直看到第9个!!能看出2都很不错了)
然后就是找规律了,这个自己都能写的!
#include <iostream> #include <stdio.h> #include<string.h> using namespace std; int pp(int n) { int ans=1; for(int i=0;i<n;i++) ans*=10; return ans; } int main() { int t; scanf("%d",&t); while(t--) { int k,m; scanf("%d%d",&k,&m); if(k==1) { printf("%d\n",15*(((m-1)/9)*10+1)+15*((m-1)%9)); } else if(k==2) { printf("%d\n",150*((m-1)/4*5+1)+150*((m-1)%4)); } else { printf("%d\n",75*pp(k-2)*(((m-1)/9)*10+1)+75*pp(k-2)*((m-1)%9)); } } return 0; }