NC54623. 蕊蕊识数
描述
输入描述
第一行一个整数,表示数据的组数。
接下来一共T行,第行表示第i组数据。每一个整数
。
数据保证输入的字符总量小于。
输出描述
输出T行,第i行对应输入的第i组数据。每行一个正整数,表示对应的n的最小的m值(m>1)。
示例1
输入:
2 2 64
输出:
2 3
说明:
64可以被2整除,64“瘦身”一次后得到的10也可以被2整除,但将64“瘦身”两次后得到1不可以被2整除。而64,10,1都不能被3整除。C++14(g++5.4) 解法, 执行用时: 140ms, 内存消耗: 3804K, 提交时间: 2019-12-05 07:29:55
#include<bits/stdc++.h> using namespace std; int main() { int T; cin >> T; int __max = 0; while (T--) { string str; cin >> str; int num = 0; for (auto &i : str)num += i - '0'; int check = (str.back() - '0') % 2;// bool flag = true; while (num >= 10) { if (num % 2!= check){ flag = false; break; } str = to_string(num); num = 0; for (auto &i : str) num += i - '0'; } if (flag&&num % 2 == check) cout << 2 << endl; else cout << 3 << endl; } return 0; }
C++(g++ 7.5.0) 解法, 执行用时: 66ms, 内存消耗: 592K, 提交时间: 2022-11-03 23:46:12
#include <bits/stdc++.h> using namespace std; int main() { int T; cin >> T; int _max = 0; while (T--) { string str; cin >> str; int num = 0; for (auto &i : str) num += i - '0'; int check = (str.back() - '0') % 2; bool flag = true; while (num >= 10) { if (num % 2 != check) { flag = false; break; } str = to_string(num); num = 0; for (auto &i : str) num += i - '0'; } if (flag && num % 2 == check) cout << 2 << endl; else cout << 3 << endl; } return 0; }
C++ 解法, 执行用时: 49ms, 内存消耗: 612K, 提交时间: 2021-10-26 00:11:51
#include <bits/stdc++.h> using namespace std; int main() { int T; cin >> T; int _max = 0; while (T--) { string str; cin >> str; int num = 0; for (auto &i : str) num += i - '0'; int check = (str.back() - '0') % 2; bool flag = true; while (num >= 10) { if (num % 2 != check) { flag = false; break; } str = to_string(num); num = 0; for (auto &i : str) num += i - '0'; } if (flag && num % 2 == check) cout << 2 << endl; else cout << 3 << endl; } return 0; }
pypy3(pypy3.6.1) 解法, 执行用时: 815ms, 内存消耗: 26244K, 提交时间: 2019-11-29 13:59:52
T = int(input()) while T: T -= 1 n = input() check = int(n[-1]) % 2 n = sum([int(i) for i in n]) flag = True while n > 9: if n % 2 != check: flag = False break n = str(n) n = sum([int(i) for i in n]) if flag and n % 2 == check: print(2) else: print(3)
Python3(3.5.2) 解法, 执行用时: 1001ms, 内存消耗: 6816K, 提交时间: 2020-01-04 20:09:04
t = int(input()) for _ in range(t): n = input() is_even = int(n[-1]) % 2 n = sum(int(i) for i in n) flag = True while n > 9: if n % 2 != is_even: flag = False break n = sum(int(i) for i in str(n)) print(2 if flag and n % 2 == is_even else 3)