Онлайн компилятор C

#include <stdio.h> int main() { int i, j, N, count=0; scanf("%d", &N); if(N<0 || N>1000) { return 0; } for(i=1;i<=N/6;i++) { for(j=1;j<=N/6;j++) { if(8*i+6*j==N) { count++; } } } printf("%d", count); return 0; }
1) 这段代码的作用是:读取一个整数 N,然后计算有多少对正整数 (i, j) 满足方程 8*i + 6*j = N,其中 i 和 j 的循环上限是 N/6,最后输出满足条件的对数 count。如果 N 不在 0 到 1000 的范围内,程序直接结束。

2) 提示:
   - 注意循环条件 `i<=N/6` 和 `j<=N/6` 可能不是最优的边界,思考一下如何根据方程 8*i + 6*j = N 更精确地限制 i 和 j 的范围。
   - 当 N 较大时,双重循环可能会比较耗时,可以考虑用单层循环通过方程直接计算 j 是否为正整数。