我的程序应该得到最小的“g”和“c”,其中5 * c-3 * g = p
例如p=48
5*12-3*4=48
(c=12, g=4)
我陷入无限循环。
我还有其他两种方式,但我想这样做。
#include <iostream.h>
int main()
{int s, c, g, p, a;
cin>>p;
a=0; s=0;
for (g=0; a==0; g++)
for (c=0; p>s; c++)
{s=5*c-3*g; if (s==p) a=1;}
cout<<c-1<<endl;
cout<<g-1<<endl;
return 0;}
答案 0 :(得分:0)
主要问题是,您正在更改内循环中s
的值,但是当内循环终止时,您不会将s
重置为0
。因此,s == p
永远不会成为true
。
试试这个:
for (g = 0; a == 0; g++) {
for (c = 0; p > s; c++) {
s = 5 * c - 3 * g;
if (s == p)
a = 1;
}
s = 0; // reset s for next checking
}
输入,
p = 12
输出可能是:
12
4