考点:转义字符
#include <stdio.h> int main(){ printf("\"Hello World!\""); return 0; }考点:思维
1.所有的人都住双人间 ( n + 1 ) / 2 ∗ a (n + 1)/ 2 * a (n+1)/2∗a 2.所有人都住双人间,但是有一个人,自己住一个双人间。 拿出一个双人间的兄弟,三个人开一个三人间。 ( n − 2 ) / 2 ∗ a + b (n - 2) / 2 * a + b (n−2)/2∗a+b 3.所有人都住三人间 ( n + 2 ) / 3 ∗ b (n + 2) / 3 * b (n+2)/3∗b 4.所有人都住三人间,但是有两个人住三人间,空一个床位 把这两个兄弟安排到一个双人间里去 n / 3 ∗ b + a n / 3 * b + a n/3∗b+a 5.所有人都住三人间,有一个人住三人间 拿出一个三人间的兄弟,这样就有4人,开两个双人间。 ( n − 2 ) / 3 ∗ b + a + a (n - 2) / 3 * b + a + a (n−2)/3∗b+a+a
#include <stdio.h> int main(){ int T; scanf("%d", &T); while (T--){ long long n, a, b; scanf("%lld%lld%lld", &n, &a, &b); long long ans = 1e18; if ((n + 1) / 2 * a < ans) ans = (n + 1) / 2 * a; if ((n - 2) / 2 * a + b < ans) ans = (n - 2) / 2 * a + b; if ((n + 2) / 3 * b < ans) ans = (n + 2) / 3 * b; if (n / 3 * b + a < ans) ans = n / 3 * b + a; if ((n - 2) / 3 * b + a + a < ans) ans = (n - 2) / 3 * b + a + a; printf("%lld\n", ans); } return 0; }考点:思维
12
121212121212…
12个12拼接在一起
各数位的和是12 * ( 1 + 2) 1 22 333 4444 55555 666666 输出 n n n 个 n n n 就行了。
#include <stdio.h> int main(){ int T; scanf("%d", &T); while (T--){ int n; scanf("%d", &n); for (int i = 1;i <= n; i++) printf("%d", n); printf("\n"); } return 0; }考点:找规律
给的两个数,找到小的和大的,如果小的乘3 + 1 小于等于大的,就可以,否则就不行。
#include <stdio.h> int main() { int T; scanf("%d", &T); while (T--) { int x, y, Min, Max; scanf("%d%d", &x, &y); if (x < y) { Min = x; Max = y; } else { Max = x; Min = y; } if (Min * 3 + 1 < Max) printf("NO\n"); else printf("YES\n"); } return 0; }考点: 思维 + 数学
给你n ,c 在 [ 1 , n ] [1 , n] [1,n],找到 a , b a, b a,b,且 g c d ( a , b ) = = c gcd(a , b) == c gcd(a,b)==c。
n < c n < c n<c : a , b < c a, b < c a,b<c,两个小于 c c c 的数,他们的 g c d gcd gcd,一定不会等于 c c c。此种情况输出 − 1 -1 −1。
n n n 在 [ c , 2 ∗ c ) [c, 2*c) [c,2∗c),这种情况 a = c , b = c a = c, b = c a=c,b=c,答案就是 c 2 c^2 c2。
其它的情况: 让a ,b尽量的大,a , b都是c 的倍数。 n里包含的最大的C的倍数 n / c ∗ c n / c * c n/c∗c 让 a = n / c ∗ c a = n / c * c a=n/c∗c 让 b = a − c b = a - c b=a−c
g c d ( a , b ) = = c ? gcd (a, b) == c ? gcd(a,b)==c?
a = n / c ∗ c , b = ( n / c − 1 ) ∗ c a = n / c * c,b = (n/c-1) * c a=n/c∗c,b=(n/c−1)∗c
判断 n / c , n / c − 1 n / c ,n / c - 1 n/c,n/c−1 是否互质。 两个相邻自然数,一定互质。
所以 g c d ( a , b ) = = c gcd(a, b) == c gcd(a,b)==c。
#include <stdio.h> int main(){ int T; scanf("%d", &T); while (T--){ long long c, n, a, b; scanf("%lld%lld", &c, &n); if (n < c) printf("-1\n"); else if (n >= c && n < 2 * c) printf("%lld\n", c * c); else printf("%lld\n", (n / c * c) * ((n / c - 1) * c)); } return 0; }