牛客算法周周练6

B—华华对月月的忠诚

这是一道纯粹的gcd,只要考虑A、B两个数的最大公约数即可,至于N的话,应该没什么用的,一发就过。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b)
{
    return (b>0)?gcd(b,a%b):a;
}
int main()
{
    ll a,b;
    string s;
    ll l;
    cin>>a>>b>>s;
    cout<<gcd(a,b);
}

C—Game
这道题感觉做的有点差,虽然也过了,但是希望有高人灵犀一点通。
思路:先判断n是否为素数或者1,是,打印"Nancy"。否的话再判断该数由多少个素数组成,奇数打印"Nancy";偶数打印"Johnson"。
#include<bits/stdc++.h>
#include<vector>
using namespace std;
typedef long long ll;
ll pd_su(ll a)              //判断是否为素数或1
{
    ll flag=1;
    for(ll i=2; i<=sqrt(a); i++)
    {
        if(a%i==0)
        {
            flag=0;
        }
    }
    return flag;
}
ll sum_su(ll a)            //统计除1以外的非素数由素数组成的个数
{
    ll s=0;
    ll n=a;
    for(ll i=2; i<a; i++)
    {
        n=a;
        while(n%i==0&&pd_su(i))
        {
            s++;
            n/=i;

        }
    }
    return s;
}
int main()
{
    ll n;
    while(cin>>n)
    {
        ll flag=1;
        if(pd_su(n))
        {
            cout<<"Nancy"<<endl;
            flag=0;
        }
        else
        {
            if(sum_su(n)%2==1)
            {
                cout<<"Nancy"<<endl;
            }
            else if(sum_su(n)%2==0)
            {
                cout<<"Johnson"<<endl;
            }
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务