牛客算法周周练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;
}
}
}
}
海康威视公司福利 1170人发布
查看19道真题和解析