其中 x,k 为正整数,并且满足 1≤x≤100
现在请你帮忙计算 x,k 为多少时,能刚好筹集�n 元。
如果有多个答案,输出 x 尽可能大,k 尽可能小的。注意 k 必须大于 0。
#include <stdio.h>
int main(void)
{
int money; //需要的钱vv
scanf("%d", &money);
for(int k = 1; ; k++)
{
for(int x = 100; x >= 1; x--)
{
if(52 * (7 * x + 21 * k) == money)
{
printf("%d
%d
", x, k);
return 0;
}
}
}
}
-
外层循环枚举k(k ∈ N+),因为k要尽可能小,所以k从1开始;
-
内层循环枚举x(x ∈ [1,100],且x ∈ N+),因为x要尽可能的大,所以x从100开始;
-
若筹得钱正好等于需要的钱(52 * (7 * x + 21 * k) == money),分两行输出x,k,返回值为0,程序结束。
4.如果x在外层的k在内层的话,x每增加1,没有遇到if的话,k会一直增大,超过时间限制,总循 环次数为xk,其中k无限增大 但是如果k在外层的话,内部x 的循环次数是可控的,不会超过时间限制