Онлайн компилятор 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;i++) { for(j=1;j<=N;j++) { if(8*i+6*j==N) { count++; } } } printf("%d", count); return 0; }
1) 这段代码的作用是:读取一个整数 N,然后计算有多少对正整数 (i, j) 满足 8*i + 6*j = N,其中 i 和 j 的取值范围都是 1 到 N。最后输出满足条件的对数。

2) 提示:当 N 较大时,双重循环的效率较低。可以思考一下,在内层循环中,是否每次都需要从 1 到 N 完整遍历 j?能否根据方程直接计算出 j 的值?另外,请注意 j 必须是正整数且满足循环范围。