c语言题,请大家看一看

问一问,为啥这个代码运行后没反应
题目是这: 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]存在越界问题,当最后一次循环时。

你代码逻辑好像有问题
参考下这个

买不到的数目(动态规划、数论)_*年夕的博客-CSDN博客 历届试题 买不到的数目描述小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。输入输入描述:两个正整数,表示每种包装中糖的颗数(都不多于1000)输入样例:4 7输出输出描述:一个 https://blog.csdn.net/qq_45891676/article/details/107814407

#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;
    }
}

}