您的位置:首页 > 其它

51nod 1770 数数字 找规律,注意进位,时间复杂度O(n)

2017-10-20 21:25 323 查看
题目:



这题很简单,找规律即可。

考虑两次进位:

1.a*b时的进位。

2.aa*b时加法时进位。

代码:

#include <bits\stdc++.h>
using namespace std;
int num[10];
int main(){
int a,b,d,n,t;
cin >> t;
while(t--){
cin >> a >> b >> d >> n;
memset(num,0,sizeof(num));
if(n <= 5){
int t = n;
int s = 0;
while(t--){
s = s*10 + a;
}
s *= b;
do{
num[s%10]++;
s /= 10;
} while(s != 0);
}else{
int t = 3;
int s = 0;
while(t--){
s = s*10 + a;
}
s *= b;
int ge = s%10;
int shi = s/10%10;
int bai = s/100%10;
int qian = s/1000%10;
if(qian != 0){
num[qian]++;
}
num[ge]++;
num[shi]++;
num[bai] += n-2;
}
cout << num[d] << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐