1004 大数

大数加法是抄的模板,要注意的是,m如果小于3,则肯定不行,因为最少的是三角形。m的取值范围是3<=m<=n+p。

#include<iostream>
#include<string>
using namespace std;

string n,m,p;

string Sum(string s1,string s2){
    if(s1.length()<s2.length()){
    string temp=s1;
    s1=s2;
    s2=temp;
}
for(int n1=s1.length()-1,n2=s2.length()-1;n1>=0;n1--,n2--){
    s1[n1]=char(s1[n1]+(n2>=0?s2[n2]-'0':0));
if(s1[n1]-'0'>=10){
    s1[n1]=char((s1[n1]-'0')%10+'0');
    if(n1)
        s1[n1-1]++;
    else
        s1='1'+s1;
} 
}
return s1;
}
int main(){
while(cin>>n>>m>>p){
int len_n=n.length();
int len_m=m.length();
if(len_m==1&&m<"3")
    printf("NO\n");
    else if(len_m<len_n||len_m==len_n&&m<n)
        printf("YES\n");
    else{
    string temp=Sum(n,p);
    int len_t=temp.length();
    if(len_t>len_m||(len_t==len_m&&(temp>m||temp==m)))
        printf("YES\n");
    else
        printf("NO\n");
}
}
//system("pause");
    return 0;
}


你可能感兴趣的:(1004 大数)