1079 延迟的回文数
注意点:如果输入的数是 回文数,那么无需计算,直接输出即可。
这题和 B1019数字黑洞 类似,用string处理 即可!
ps:第一次做时,写了68行,第二次做时,写了38行。。。
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 5 bool isPalindromicNumber(const string& str) {//判断是否是回文数 6 int n = str.size(); 7 for(int i = 0; i < n/2; ++i) 8 if(str[i] != str[n-1-i]) return false; 9 return true; 10 } 11 12 int main() { 13 string str; 14 cin>>str; 15 int i; 16 for(i = 0; i < 10; ++i) { 17 if(isPalindromicNumber(str)) { 18 printf("%s is a palindromic number.",str.c_str()); 19 break; 20 } 21 string temp = str; 22 reverse(temp.begin(),temp.end()); 23 printf("%s + %s = ",str.c_str(),temp.c_str()); 24 string result; 25 int carry = 0; 26 for(int i = str.size()-1; i >= 0; --i) { 27 result += (str[i]-'0'+temp[i]-'0'+carry)%10 +'0'; 28 carry = (str[i]-'0'+temp[i]-'0'+carry)/10; 29 } 30 if(carry != 0) result += carry +'0'; 31 reverse(result.begin(),result.end()); 32 printf("%s\n",result.c_str()); 33 str = result; 34 } 35 if(i == 10) 36 printf("Not found in 10 iterations."); 37 return 0; 38 }