3个变量n,x,y;在接下来的 n 天里,可达可和可达达可以分别选择一天领取第一块金子,当然也可以选择同一天,从各自第一天拿到金子开始算起,可达可每 x 天会得到一块金子,可达达每 y 天会得到一块金子,如果有一天,可达可和可达达都应该拿到金子,那么国王将只给他们每人半块金子,可达可和可达达希望他们两人得到的金子总数尽量多,那么最多可以得到多少块金子呢。?输入数据 100 4 7 输出数据 37 。c++代码
时间: 2023-05-30 16:03:06 浏览: 66
#include <stdio.h>
int main()
{
int n, x, y;
scanf("%d %d %d", &n, &x, &y);
int ans = 0;
for(int i = 1; i <= n; i++)
{
if(i % x == 0 && i % y == 0) // 可达可和可达达都应该拿到金子
{
ans += 1; // 两人各拿半块金子,总共加一块
}
else if(i % x == 0) // 只有可达可可以拿到金子
{
ans += 1;
}
else if(i % y == 0) // 只有可达达可以拿到金子
{
ans += 1;
}
}
printf("%d\n", ans);
return 0;
}
相关问题
3个变量n,x,y;在接下来的 n 天里,可达可和可达达可以分别选择一天领取第一块金子,当然也可以选择同一天,从各自第一天拿到金子开始算起,可达可每 x 天会得到一块金子,可达达每 y 天会得到一块金子,如果有一天,可达可和可达达都应该拿到金子,那么国王将只给他们每人半块金子,可达可和可达达希望他们两人得到的金子总数尽量多,那么最多可以得到多少块金子呢。? c++代码
#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;
}