3881 循环小数
题目描述 Description
现在有一个无限循环小数是0.145127856891451278568914512785689…,现在给定一个数字n,需要你求出小数点后第n位数字是多少。
输入描述 Input Description
一个正整数t,表示有t组数据。
接下来t行,每行一个数字n。
输出描述 Output Description
输出小数点后第n位数字是几。
样例输入 Sample Input
3
1
2
5
样例输出 Sample Output
1
4
2
数据范围及提示 Data Size & Hint
1<n<1000000
我的超时代码:
#include<iostream> using namespace std; int a[1000010]; int main() { int n,m=1; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; while(1) { if((a[i]==1||a[i]==m+11)||(a[i]==4||a[i]==m+11)) { cout<<1<<endl; break; } else if(a[i]==2||a[i]==m+11) { cout<<4<<endl; break; } else if((a[i]==3||a[i]==m+11)||(a[i]==8||a[i]==m+11)) { cout<<5<<endl; break; } else if(a[i]==5||a[i]==m+11) { cout<<2<<endl; break; } else if(a[i]==6||a[i]==m+11) { cout<<7<<endl; break; } else if((a[i]==7||a[i]==m+11)||(a[i]==10||a[i]==m+11)) { cout<<8<<endl; break; } else if(a[i]==9||a[i]==m+11) { cout<<6<<endl; break; } else if(a[i]==11||a[i]==m+11) { cout<<9<<endl; break; } m++; } } return 0; }
求大佬指点
定义 n,a[1000005];
输入>>n;
循环(int i=1;i<=n;i++){
输入>>a[i];
如果(a[i]%11==1) 输出<<1<<换行;
if(a[i]%11==2) cout<<4<<endl;
if(a[i]%11==3) cout<<5<<endl;
if(a[i]%11==4) cout<<1<<endl;
if(a[i]%11==5) cout<<2<<endl;
if(a[i]%11==6) cout<<7<<endl;
if(a[i]%11==7) cout<<8<<endl;
if(a[i]%11==8) cout<<5<<endl;
if(a[i]%11==9) cout<<6<<endl;
if(a[i]%11==10) cout<<8<<endl;
if(a[i]%11==0) cout<<9<<endl;
}