重走长征路---OI每周刷题记录---11月16日 2013

总目录详见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.兔羊大战 

猜你喜欢

转载自blog.csdn.net/mrcrack/article/details/86540280
今日推荐