小 X 是预言家,他有一个 $n\times n$ 的表格,里面从左到右从上到下依次填满从 $1$ 到 $n^2$ 的正整数。
小 Y 来找小 X 预言自己今天晚上会不会被狼人刀,于是小 X 让他从 $1$ 到 $n^2$ 的正整数里随机抽了两个数 $a,b$。如果 $a$ 和 $b$ 在表格中相邻,就会有不祥之兆。
但是小 X 的表格太大了,于是他找到了你并给你了表格边长 $n$ 和小 Y 抽的数 $a,b$,让你帮忙算一下小 Y 今晚是否会有不祥之兆。
输入
仅一行三个整数 $n,a,b$。
输出
一行一个字符串。
如果今晚小 Y 有不祥之兆,输出 Yes,否则输出 No。
样例
输入
1
3 47
输出
1
Yes
解释
$n=3$ 时表格如下:
1 2 3
1 23 4 56 7 89
显然 4 和 7 相邻。
提示
数据范围:$n\leq 1000 ,1\leq a<b\leq n^2$。
请从标准输入读入数据,将结果输出到标准输出。
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include<iostream> usingnamespace std;
intmain(){ int n,a,b; cin>>n>>a>>b; int max = a>b?a:b; int min = a+b-max; if((min%n!=0&&min+1==max)||min+n==max){ cout<<"Yes"<<endl; }else{ cout<<"No"<<endl; } }
17.你知道吗(分支)
描述
你知道吗,有的时候汉字的序顺并不一影定响阅读。
Coi 偶然得到了一个包含 32 个整数的序列 $A=(A_0,A_1,\dots,A_{31})$,序列的每个元素都只有两个取值 $0$ 和 $1$。
但是只有 $0$ 和 $1$ 导致 Coi 有的时候并不能准确判断这个序列是否被熊孩子动过,于是他准备将这个序列依照一种关系转换成一个数 $x$,这样辨识度就高了。
std::vector<int> get_rotations(int x){ int n = std::to_string(x).size(); std::vector<int> rotations; rotations.reserve(n- 1); int power = pow(10, n - 1); int current = x; for (int i = 1; i < n; ++i) { int last_digit = current % 10; current = last_digit * power + (current / 10); if (current != x) { rotations.push_back(current); } } return rotations; }
intmain(){ int L, R; cin >> L >> R; int count = 0; for (int a = L; a < R; ++a) { string s = to_string(a); unordered_set<int> rotations_a; vector<int> rotations = get_rotations(a); for (int r : rotations) { if (r > a && r <= R) { rotations_a.insert(r); } } count += rotations_a.size(); } cout << count << endl; return0; }
intmain() { int n, k; scanf("%d%d", &n, &k); for (int i = 0; i < n; i++) { int ni; scanf("%d", &ni); if (i >= k) { printf("%d ", ni); } } for (int i = 0; i < k - 1; i++) { printf("0 "); } printf("0\n"); return0; }
intmain(){ int n, a, b, c; cin >> n >> a >> b >> c;
int max_food = -1; int min_diff = INT_MAX; if (a + b + c > n) { cout << "-1 -1" << endl; return0; } // 这里暴力居然过了,不管了 for (int x = 1; x <= (n - b - c) / a; ++x) { for (int y = 1; y <= (n - a * x - c) / b; ++y) { int remaining = n - a * x - b * y; if (remaining >= c) { int z = remaining / c; if (z >= 1) { int total = a * x + b * y + c * z; int eat_a = a * x; int eat_b = b * y; int eat_c = c * z; int current_max = max({eat_a, eat_b, eat_c}); int current_min = min({eat_a, eat_b, eat_c}); int diff = current_max - current_min; if (total > max_food || (total == max_food && diff < min_diff)) { max_food = total; min_diff = diff; } } } } }
intmain(){ int n; scanf("%d",&n); longlong sum = 0; for (int i = 0; i < n; ++i) { int num; scanf("%d",&num); sum += num; } double average = static_cast<double>(sum) / n; printf("%.2lf",average); return0; }