1023. Have Fun with Numbers (20)

题目:

https://www.patest.cn/contests/pat-a-practise/1023

大概描述:

求一个大数的二倍数,然后将各位数进行统计,比较

特征词:

大数运算

使用语言:

C++

解题思想:

进行大数运算的套路,string+reverse

题目得分:

20

提交次数:

3

时间

25

代码

#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
string str;
string ans;
int main(){
 cin >> str;
 int num = str.length();
 //reverse的用法
 reverse(str.begin(),str.end());
 int i= 0;
 int yuan[10] = {0};
 int jie[10] = {0};
 int k = 0;
 int sign = 0;
 int y = 0;
 for(i = 0;i < num;i++){
 y = str[i] - '0';
 yuan[y] ++;
 k = y * 2 + sign;
 sign = 0;
 if(k >= 10){
 jie[k - 10] ++;
 ans += ('0' + k - 10);
 sign = 1;
 }else{
 jie[k] ++;
 ans += ('0' + k);
 }
 }
 if(sign == 1){
 ans += '1';
 }
 reverse(ans.begin(),ans.end());

 for(i = 0 ;i < 10;i++){
 if(jie[i] != yuan[i]){
 printf("No\n");
 cout << ans;
 return 0;
 }
 }
 printf("Yes\n");
 cout << ans;
 return 0;
}

运行结果

20

 成长

再次使用了reverse的函数,reverse(str.begin(),str.end());

发表评论

电子邮件地址不会被公开。 必填项已用*标注