A题
用前几天刚学的前缀和打2的n次幂和的表(真是现学现卖哈哈哈),然后从第2个元素排着除n如果是整除,就输出;
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a[31] = {1},sum = 1;;
int i;
for(i = 1;i<=30;i++)
{
sum = sum*2;
a[i] = sum+a[i-1];
}
int t;
cin>>t;
while(t--)
{
long long n;
cin>>n;
int i;
for(i = 1;i<=30;i++)
{
if(n%a[i]==0)
{cout<<n/a[i]<<endl;break;}
}
}
} B题 小于四直接输出和不能被四整除的直接输出NO;能被四整除的就先输出所有的偶数,然后再输出前n/2-1个奇数,在输出一个第n/2-1个奇数加上n/2-1;
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
if(n%4!=0)
cout<<"NO"<<endl;
else
{
cout<<"YES"<<endl;
int i;
for(i = 2;i<=n;i+=2)
{
cout<<i<<" ";
}
for(i = 1;i<n-1;i+=2)
{
cout<<i<<" ";
}
cout<<n+(n/2-1)<<endl;
// cout<<endl;
}
}
} C题 直接输出一个b两个C就行,一定是等腰三角形
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int a,b,c,d;
cin>>a>>b>>c>>d;
cout<<b<<" "<<c<<" "<<c<<endl;
}
} D题 先用第一种方法看看能否将x变成毕m*10小的数,要注意的一点就是,如果x<=x/2+10,再用方法一就会变大
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int x,n,m;
cin>>x>>n>>m;
int i;
for(i = 1;i<=n&&x>0&&x>x/2+10;i++)
{
x = x/2+10;
}
if(x>m*10)
cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
} E题 奇数输出n/2;偶数输出n/2-1,注意数据大小就行
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
long long n;
cin>>n;
if(n%2==0)
cout<<n/2-1<<endl;
else cout<<n/2<<endl;
}
} F题
直接输出长度为n的若干个小循环节就行。
#include<bits/stdc++.h>
using namespace std;
char s[28] = "0abcdefghijklmnopqrstuvwxyz";
int main()
{
int t;
cin>>t;
while(t--)
{
int n,a,b;
cin>>n>>a>>b;
int i,j;
for(i = 0;i < n;i++)
{
printf("%c",s[i%b+1]);
}
cout<<endl;
}
} 
京公网安备 11010502036488号