A.小红的同余
思路+解法:
找到唯一一个x满足2x % m = 1 (0 <= x < m) 就可以推出 (m + 1) * 2即可
Code:
#include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int m; cin >> m; cout << (m + 1) / 2; return 0; }
B.小红的三倍数
题意:
n个整数,长度很大,让你首位拼接,推出拼接后的整数是不是3的倍数
思路:
这个式子为什么能推出来(其实就是以前的知识),以下给出证明 n = a(k) * 10^k + a(k - 1) * 10^(k - 1) + ... + a(1) * 10 + a(0) 10^k % 3 = 1 所以就会得到 (a(k) + a(k - 1) + a(1) + a(0)) % 3是等价于 n % 3 证毕
如果说让你拼接的是不是其他(1 ~ 9)的倍数那能推出什么
2的倍数:最后一位数字是2的倍数
3的倍数:各位数字之和是3的倍数
4的倍数:最后两位数字组成的数是4的倍数
5的倍数:最后一位数字是5的倍数
6的倍数:同时是2和3的倍数
9的倍数:各位数字之和是9的倍数
Code:
#include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; int ans = 0; for (int i = 1; i <= n; i++) { string s; cin >> s; for (char c : s) { ans += (c - '0'); } } cout << (ans % 3 ? "NO\n" : "YES"); return 0; }
标签:10,cout,int,51,cin,牛客,倍数,tie,Round From: https://www.cnblogs.com/youhualiuh/p/18302090