记一次代码优化
题目选择:不定方程的非负整数解解。 问题描述:问方程 x+2y+5z=n, 对于特定输入的 n ( n<=1000000 ),输出其大于的整数解的个数。其时间限制是为: 1000ms 。 选择原因:选择此题主要是由于自己实际作此题过程中,遇到了很多问题,这篇报告主要是来写我对于这些问题的解决,与对代码的不断优化。 解题过程: 这个问题非常简单,是的,非常简单,只要一个枚举就能解决,而我为啥还要选择这个问题来写报告了,因为当我改了多次代码系统才通过我写的代码,由于我下了狠心,一定要尽自己最大的努力把它写的最好,写的运行速度最快,甚至举一反三的将这个问题扩散到更广。 我拿到这个问题,想都没想就写了如下的代码: #include <stdio.h> void jieshu(int n) { int i,j,k,g; for(i=0;i<=n;i++) for(j=0;j<=n/2;j++) for(k=0;k<=n/5;k++) { if(i+2*j+5*k==n) g++; } printf("%d",g); } int main() { int t,n; while(~scanf("%d",&t)) { while(t--) { scanf("%d",&n) jieshu(n); } } return 0; } 这就是一个暴力枚举法,的确对于很小的 n ,结果完全没有问题