题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805345732378624
大数相加,记个模板。
#include <bits/stdc++.h>
using namespace std;
string sum(string s1, string s2) {
if(s1.length() < s2.length()) swap(s1, s2);
int i, j;
int l1 = s1.length(), l2 = s2.length();
for(i = l1 - 1, j = l2 - 1; i >= 0; i--, j--) {
s1[i] = char(s1[i] + (j >= 0 ? s2[j] - '0' : 0));
if(s1[i] - '0' >= 10) {
s1[i] = char((s1[i] - '0') % 10 + '0');
if(i) s1[i - 1]++;
else s1 = '1' + s1;
}
}
return s1;
}
bool check(string s) {
int len = s.length();
for(int i = 0; i <= len / 2 + 1; i++) {
if(s[i] != s[len - i - 1])
return false;
}
return true;
}
int main() {
string a;
cin >> a;
int cnt = 0, flag = 0;
while(cnt < 10) {
if(check(a)) {
flag = 1;
cout << a + " is a palindromic number." << endl;
break;
}
string b = a;
reverse(a.begin(), a.end());
cout << b << " + " << a << " = " << sum(a, b) << endl;
a = sum(a, b);
cnt++;
}
if(!flag) {
if(check(a)) cout << a + " is a palindromic number." << endl;
else cout << "Not found in 10 iterations." << endl;
}
return 0;
}
java实现
package abcd;
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
BigInteger n;
n = cin.nextBigInteger();
if(check(n.toString())) {
System.out.println(n + " is a palindromic number.");
return ;
}
int cnt = 0;
while(cnt < 10) {
n = cal(n);
if(check(n.toString())) {
System.out.println(n + " is a palindromic number.");
return ;
}
cnt++;
}
System.out.println("Not found in 10 iterations.");
}
public static boolean check(String s) {
int l = 0, r = s.length() - 1;
while(l <= r) {
if(s.charAt(l) != s.charAt(r))
return false;
l++;
r--;
}
return true;
}
public static String fan(String s) {
return new StringBuilder(s).reverse().toString();
}
public static BigInteger cal(BigInteger n) {
String a = n.toString();
String b = fan(a);
System.out.print(a + " + " + b + " = ");
BigInteger ans = new BigInteger(b);
ans = ans.add(n);
System.out.println(ans);
return ans;
}
}