PAT--1136 A Delayed Palindrome--大數相加

題目鏈接: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;
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章