我的剑就是你的剑,辗转相除法(不理解,请留下评论,必回)

小易的升级之路

http://www.nowcoder.com/questionTerminal/fe6c73cb899c4fe1bdd773f8d3b42c3d

判断经验(能力值)的累加问题;
没有越级杀怪,经验正常累加,
若越级杀怪,使用最大公约数(辗转相除法)求出经验,进行累加;
#include<stdio.h>
int main()
{
    int a,b;
    while(~scanf("%d %d",&a,&b)){
        int sz[a],i=0;
        while(i<a){
            scanf("%d",&sz[i]);
            if(sz[i]<=b){b+=sz[i];}//没有越级杀怪,经验正常累加,
            else{
                int max=sz[i],min=b,com=0;//越级杀怪,使用最大公约数求出经验,进行累加;
                while(max%min!=0){//辗转相除法
                    com=max%min;
                    max=min;
                    min=com;
                }
                b+=min;
            }
            i++;
        }
        printf("%d\n",b);
    }
    
    return 0;
}


全部评论

相关推荐

评论
2
收藏
分享
牛客网
牛客企业服务