简单的大数问题,long long并不能容纳21位数字,这是刚开始没有注意到的#include<iostream>#include<stdlib.h>#include<stdio.h>#include<string>#include<cstring>#include<vector>using namespace std;using std::vector;char s[21];int mem[10]={0};int main(){ vector<int>v; scanf("%s",s); for(int i=0;i<strlen(s);i++){ mem[s[i]-‘0’]++; } //进行乘2大数运算; int ct=0; for(int i=strlen(s)-1;i>=0;i–){ int a=(s[i]-‘0’)*2+ct; ct=a/10; v.push_back(a%10); } if(ct!=0) v.push_back(ct); for(int i=v.size()-1;i>=0;i–){ mem[v[i]]–; } bool flag=true; for(int i=0;i<10;i++){ if(mem[i]!=0){ flag=false; break; } } if(flag){ cout<<“Yes”<<endl; for(int i=v.size()-1;i>=0;i–){ cout<<v[i]; } cout<<endl; }else{ cout<<“No”<<endl; for(int i=v.size()-1;i>=0;i–){ cout<<v[i]; } cout<<endl; } system(“pause”); return 0;}