分值 : 25 难度 : 简单string题 思路 : 因为数字较大,因此需要用string处理。 坑点 : 自己设置进位标志Cy,然后一步步运算。 评语 : 细心一点,考虑完全边界情况就好。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
#include <iostream>#include <algorithm>#include <string>using namespace std ;string Add(string a,string b ){ int cy = 0 ; int cur1 = a.size() -1 ; int cur2 = b.size() -1 ; string result ; while(cur1>=0 && cur2>=0) { int value = (a[cur1]-'0') + (b[cur2]-'0') +cy ; if(value >= 10) { cy = 1 ; } else cy =0 ; result += '0'+ value%10 ; cur1-- ; cur2-- ; } if(cy) result += '1' ; reverse(result.begin(),result.end()); return result ;}int main() { int K ; string N ; cin >> N >> K; int i = 0 ; while(i < K ) { string temp = N ; reverse(N.begin() , N.end()); if(temp == N) { cout <<temp <<endl ; cout << i << endl ; break ; } i++ ; N = Add(temp ,N ) ; } if(i>=K) { cout << N <<endl ; cout << K <<endl ; } return 0 ;}