总目录详见https://blog.csdn.net/mrcrack/article/details/84471041
做题原则,找不到测评地址的题不做。2018-11-28
重走长征路---OI每周刷题记录---11月16日 2013
本周共计13题
测评地址:
队列
1.卡牌游戏
模拟
2.最大公约数和最小公倍数问题
3.回文质数
4.苹果摘淘淘
背包dp
5.金明的预算方案
高精度
6.hanoi双塔
dp
7.打水漂
bfs
8.魔兽世界
9.紧急救援
10.24点
思考题
11.兔子的世界
模拟
12.兔子列队
13.兔羊大战
题解:
队列
1.卡牌游戏
模拟
2.最大公约数和最小公倍数问题
//P1029 最大公约数和最小公倍数问题
//在线测评地址https://www.luogu.org/problemnew/show/P1029
//研究样例,发现规律
//60/3=20
//1*20 3=>3 60 gcd(1,20)=1
//2*10 3=>6 30 gcd(2,10)=2 舍弃
//4*5 3=>12 15 gcd(4,5)=1
//5*4 3=>15 12 gcd(5,4)=1
//10*2 3=>30 6 gcd(30,6)=6 舍弃
//20*1 3=>60 3 gcd(20,1)=1
//还需欧几里得定理
//纯模拟,发现规律
//在担心,统计个数,是否int会溢出,编好后,测试一下
//编好代码后,发现1000000的因数对最多1000000,故int不会溢出
//样例通过,提交80分,测试点4WA,
//在考虑,有可能出现个数为0的情况,即y%x!=0,需特判
//加上特判,提交AC。2019-1-18 21:54
//本次编写,全过程,无任何参考,完全是独立思考的结果。
#include <stdio.h>
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
int main(){
int i,x,y,cnt=0;
scanf("%d%d",&x,&y);
if(y%x!=0){//有可能出现个数为0的情况,即y%x!=0,需特判
printf("0\n");
return 0;
}
y/=x;
for(i=1;i<=y;i++)
if(y%i==0&&gcd(i,y/i)==1)//此处写成 if(y%i==0&&gcd(i,y%i)==1) 确实有点昏
cnt++;
printf("%d\n",cnt);
return 0;
}
3.回文质数
4.苹果摘淘淘
背包dp
5.金明的预算方案
高精度
6.hanoi双塔
dp
7.打水漂
bfs
8.魔兽世界
9.紧急救援
10.24点
思考题
11.兔子的世界
模拟
12.兔子列队
13.兔羊大战