牛客算法周周练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; } } } }