总结方法有:
1. 暴力法: 从 1 直到 MAX 去试,符合的累加,循环1000次
2. 优化暴力法: 减少循环的次数,例如2次循环的跳距用 3 和 5 来跳,1000/3+1000/5次
3. 公式法: 直接公式套出结果,(最大+最小) * (符合数/2) 得出综合,但出现符个数为单个数的情况,要扣除。最后注意要消除a*b产生的重复
#include <stdio.h>
#define MAX 1000
unsigned int F(unsigned int x);
int main(int argc, char **argv){
unsigned int a , b , cont=0;
scanf("%d %d",&a,&b);
cont+=F(a);
cont+=F(b);
cont-=F(a*b);
printf("%u\n",cont);
return 0;
}
unsigned int F(unsigned int x){
unsigned int tmp , cont = 0;
tmp=(MAX-1)/x;
cont += tmp/2 * (x + tmp*x);
if((tmp%2) == 1){cont+=(x + tmp*x)/2;};
return cont;
}
|