大数加法是抄的模板,要注意的是,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; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。