#include
int main(){
int T, a, b;
scanf("%d", &T); //首先把 T 读进来
while (T--){ //放在while里,每次自减一次,会自减 T 次,就达到了循环 T 次的目的
scanf("%d%d", &a, &b); //对于每次循环,进行输入,输出。
printf("%d\n", a + b);
}
return 0;
}
考点:转义字符
#include
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
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
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
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
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;
}