我想解决一个x和y的组合问题(在本例中为11和15),并检查数字(c)是否为这些数字的组合,是否为11x + 15y = c
#include <stdio.h>
int separate_as(int c, int a, int b, int *x, int *y)
{
*x = 0;
for (; c % b != 0 && (c > a); c -= a, (*x)++);
if (c < a && c < b) return -1;
*y = c / b;
return 0;
}
int main()
{
int times;
int c;
int x,y;
scanf("%d", ×);
for (int i=0; i<times; i++)
{
scanf("%d", &c);
}
for (int z=0; z<times; z++)
{
if (separate_as(c, 15, 11, &x, &y) == -1)
{
printf("NO\n");
}
else if (separate_as(c, 15, 11, &x, &y) == 0)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
return 0;
}
输入:
5 (the number of n input)
89
234
876
99
12
输出:
YES
YES
YES
YES
YES
预期输出:
YES
YES
YES
YES
NO
1条答案
按热度按时间qgzx9mmu1#
有趣的小问题。
但看起来你在代码中把它弄得非常复杂。
这里有一个简单的解决方案。
输出