问一问,为啥这个代码运行后没反应
题目是这: SW学长开了一家糖果店。 他别出心裁:把水果糖包成4颗一包和7颗一包的两种。 糖果不能拆包卖。 小朋友来买糖的时候,他就用这两种包装来组合。 当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。 你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。 大于17的任何数字都可以用4和7组合出来。 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。 输入 两个正整数 n,m,表示每种包装中糖的颗数。 2≤n,m≤1000, 保证数据一定有解。 输出 一个正整数,表示最大不能买到的糖数。 样例输入 4 7 样例输出 17
#include<stdio.h>
#include<stdlib.h>
main()
{
int a = 1000, b = 1000, i, c, d, r[100000] = {0}, e = 0;
for (i = 10000;i>2; i--)
{
for (d = 2;d< 1000 ; d++)
{
for (c = 2;c< 1000; c++)
{
if (i == d * a + b * c)
{
r[e]=i;
e++;
}
}
}
}
for (e = 0; e < 100000;e++)
{
if (r[e] == r[e+1])
{
e++;
}
if ((r[e] - r[e+1]) == 2)
{
printf("%d", r[e] - 1); break;
}
}
}
if ((r[e] - r[e+1]) == 2)
只有满足条件才输出。其他地方加点输出信息看看运行情况。
而且r[e] - r[e+1]存在越界问题,当最后一次循环时。
#include<stdio.h>
#include<stdlib.h>
main()
{
int a = 4, b = 7, i, c, d, r[1000000] = {0}, e = 0;
for (i = 1000000;i>2; i--)
{
for (d = 2;d<= 1000 ; d++)
{
for (c = 2;c<= 1000; c++)
{
if (i == d * a + b * c)
{
r[e]=i;
e++;
}
}
}
}
for (e = 0; e <= 1000000;e++)
{
if (r[e] == r[e+1])
{
e++;
}
if ((r[e] - r[e+1]) == 2)
{
printf("%d", r[e] - 1); break;
}
}
}