做为一个小菜鸟,最近在学习一些算法方面的东西,在USTC Online Judge for ACM/ICPC看到这么简单的一道题:
自己用C语言写了一个顺序循环求解算法:
#include<stdio.h> int main(){ int T; int N[100]={0}; int i; int j; long long count=0; //第一行输入一个正整数T(T<=100),代表下面共有T组测试数据。 scanf("%d",&T); for(i=T;i>0;--i){ //下面T行,每行一个整数N(0<=N<=1000000)。 scanf("%d",&N[T-i]); } for(i=T;i>0;--i){ for(j=N[T-i]/5;j>=0;--j){ //用移位操作来代替乘除法,降低循环体内单位操作的数量级 count+=((N[T-i]-(j<<2)-j)>>1)+1; } printf("%lld\n",count);//输出该方程解的组数。 count=0; } return 0; }
系统接收了代码,显示的算法性能如下:
看到有些筒子提交的算法代码长度和内存消耗和我的都差不多,但是时间在0ms,不懂,求高人指教~