|
发表于 2019-10-20 16:01:25
|
显示全部楼层
总结方法有:
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;
- }
复制代码
|
|