27 字
1 分钟
小苯的数字折叠-牛客周赛106B
这是爆掉的C++(long long 爆了)
#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;
long long reverse(long long n) {long long rev = 0;while (n > 0) {int digit = n % 10;rev = rev * 10 + digit;n /= 10;}return rev;}
bool isPalindrome(long long n) {long long rev = reverse(n);return n == rev;}
int main() {int T;cin >> T;while (T--) {long long n;int k;cin >> n >> k;bool found = false;int steps = 0;for (int i = 0; i < k; i++) {long long nx = reverse(n);long long temp = n + nx;if (isPalindrome(temp)) {n = temp;steps = i + 1;found = true;break;}n = temp;}if (found) {cout << n << " " << steps << endl;}else {cout << n << " " << -1 << endl;}}return 0;}博主很懒,所以干脆换成了Java
import java.math.BigInteger;import java.util.Scanner;
public class Main {
public static BigInteger reverse(BigInteger n) {String str = n.toString();StringBuilder sb = new StringBuilder();for (int i = str.length() - 1; i >= 0; i--) {sb.append(str.charAt(i));}int st = 0;while (st < sb.length() - 1 && sb.charAt(st) == '0') {st++;}return new BigInteger(sb.substring(st));}
public static boolean isPalindrome(BigInteger n) {String str = n.toString();int l = 0;int r = str.length() - 1;while (l < r) {if (str.charAt(l) != str.charAt(r)) {return false;}l++;r--;}return true;}
public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int T = scanner.nextInt();
for (int t = 0; t < T; t++) {BigInteger n = scanner.nextBigInteger();int k = scanner.nextInt();boolean found = false;int steps = 0;if (isPalindrome(n)) {System.out.println(n + " 0");continue;}for (int i = 0; i < k; i++) {BigInteger reversed = reverse(n);n = n.add(reversed);steps = i + 1;if (isPalindrome(n)) {found = true;break;}}if (found) {System.out.println(n + " " + steps);} else {System.out.println(n + " -1");}}
}} 分享
如果这篇文章对你有帮助,欢迎分享给更多人!
小苯的数字折叠-牛客周赛106B
https://shiliuyinyu.github.io/posts/nowcoder-weekly-106b/ 部分信息可能已经过时
相关文章 智能推荐