3个变量n,x,y;在接下来的 n 天里,可达可和可达达可以分别选择一天领取第一块金子,当然也可以选择同一天,从各自第一天拿到金子开始算起,可达可每 x 天会得到一块金子,可达达每 y 天会得到一块金子,如果有一天,可达可和可达达都应该拿到金子,那么国王将只给他们每人半块金子,可达可和可达达希望他们两人得到的金子总数尽量多,那么最多可以得到多少块金子呢。? c++代码
时间: 2023-05-30 19:03:03 浏览: 56
#include<stdio.h>
int main(){
int n,x,y;
scanf("%d%d%d",&n,&x,&y);
int gcd = x>y ? gcd = y : gcd = x; //求出x和y的最小公倍数
for(int i=gcd; i>0; i--) {
if(x%i==0 && y%i==0) {
gcd = i;
break;
}
}
int res = 0;
for(int i=1; i<=n; i++) {
if(i%x==1 && i%y==1) { //当可达可和可达达都应该拿到金子时
res += 0.5;
} else if(i%x==1) { //只有可达可应该拿到金子
res += 1;
} else if(i%y==1) { //只有可达达应该拿到金子
res += 1;
}
}
printf("%d\n",res);
return 0;
}
相关问题
3个变量n,x,y ,有n天,可达可和可达达可以分别选择一天领取第一块金子,当然也可以选择同一天,从各自第一天拿到金子开始算起,可达可每 x 天会得到一块金子,可达达每 y 天会得到一块金子,最后一次取,分别取0.5个,最多取多少个?c++代码
#include <stdio.h>
int main() {
int n, x, y;
scanf("%d%d%d", &n, &x, &y);
int cnt = 0; // 记录可达可得到的金子数
int i, j;
for (i = 1; i <= n; i++) {
if (i % x == 1 && i % y != 1) { // 可达可取金子的情况
cnt++;
} else if (i % y == 1 && i % x != 1) { // 可达达取金子的情况
cnt++;
} else if (i % x == 1 && i % y == 1 && i != 1) { // 都可以取金子的情况
cnt += 0.5;
}
}
printf("%d\n", cnt);
return 0;
}
3个变量n,x,y ,有n天,分别x,y天取1个金币,最后一次取,分别取0.5个,最多取多少个?c++代码
```c
#include <stdio.h>
int main() {
int n, x, y;
scanf("%d%d%d", &n, &x, &y);
int ans = n - (y / x) - 1;
if (y % x == 0 || n <= y / x + 1) {
printf("%d", ans);
} else {
printf("%d", ans - 1);
}
return 0;
}
```