总体来说菜得很…D题有点思路但是实现不了。。。
Two Regular Polygons
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t,n,m;
int main()
{
cin>>t;
while(t--)
{
cin>>n>>m;
if(n%m==0) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
Bogosort
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int t,n,m;
int a[N];
int main()
{
cin>>t;
while(t--)
{
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
for(int i=n-1;i>=0;i--)
cout<<a[i]<<' ';
cout<<endl;
}
return 0;
}
Adding Powers
对于给定一个数x,如果x可以展开成底数k的幂的和的形式,那么 x % k = 1 或 x % k = 0。只要想到这点就行了,然后按照k进制算就行了。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1010,mod=1e9+7;
int t,n,m,k;
ll a[N],cnt[N];
int main()
{
cin>>t;
while(t--)
{
cin>>n>>k;
for(int i=0;i<n;i++) cin>>a[i];
bool flag=0;
for(int i=0;i<n;i++)
if(a[i])
flag=1;
if(!flag)
{
cout<<"YES"<<endl;
continue;
}
memset(cnt,0,sizeof cnt);
for(int i=0;i<n;i++)
{
for(int j=0;j<100;j++)
{
cnt[j]+=a[i]%k;
a[i]/=k;
}
}
for(int i=0;i<100;i++)
if(cnt[i]>1)
flag=0;
if(flag) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
Count the Arrays
先放一下,这有个卢卡斯定理,等小编整理一下再发