牛客竞赛语法入门班循环结构习题【完结】

牛客竞赛语法入门班循环结构习题【完结】,第1张

牛客竞赛语法入门班循环结构习题【完结】

入门级别的题
题单地址:https://ac.nowcoder.com/acm/contest/19305?from=acdiscuss#question/%22page%22%3A1

目录

上下金字塔数字三角形字符金字塔涂小天与他的画箭形图案牛牛学数列牛牛学数列2牛牛学数列3牛牛学数列4牛牛学数列5牛牛学数列6A+B多组输入a+b多组输入a+b II多组数据a+b III[NOIP2018]标题统计栗酱数数有趣的二进制[NOIP2006]数列只能吃土豆的牛牛[NOIP2015]金币托米历险记绩点买铅笔整数个数栗酱的文明2黑大火与他的猫[NOIP2000]进制转换【负数进制】素数判断Game【有意思】[NOIP1999]Cantor表最大的差成绩统计糖果俱乐部数字计数热杆上的蚂蚁焦虑的蚂蚁拯救小aYoungManDon'tSayFive魔法数字变换[NOIP2005]陶陶摘苹果[NOIP2004]津津的储蓄计划[NOIP2002]级数求和cayun日常之赏月鹏D博弈与核心能源动力好数3和5和7回文对称数数位之和箱子归位栗酱和火柴[NOIP2009]多项式输出更相减损术

上下金字塔
#include
void print_f(int n);
int main(void)
{
    int n;
    while( scanf("%d",&n) != EOF )
    {
        print_f(n);
    }
    return 0;
}
void print_f(int n)
{
    int i,j;
    for(i=1;i<=n;i++)
    {
		for(j=1;j<=n-i;j++)
		{
			printf(" ");
		}
        for(j=1;j<=i*2-1;j++)
        {
            printf("*");
        }
		printf("n");
    }
	for(i=1;i<=n-1;i++)
	{
		for(j=1;j<=i;j++)
		{
			printf(" ");
		}
		for(j=1;j<=2*(n-i)-1;j++)
		{
			printf("*");
		}
		printf("n");
	}
}
数字三角形
#include
int main(void)
{
    int n;
    int i,j;
    int a=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=i;j++)
        {
            printf("%4d",a);
            a++;
        }
        printf("n");
    }
}
字符金字塔
#include
using namespace std;
int main(void) 
{
	char c; cin>>c;
	int n=c-'A'+1;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n-i;j++) cout<<" ";
		int k=0;
		for(int j=1;j<=1+(i-1)*2;j++) 
		{
			printf("%c",'A'+k);
			if(j 
涂小天与他的画 
#include
using namespace std;
int main(void)
{
	int t; cin>>t;
	while(t--)
	{
		int n; cin>>n;
        n=n/2+1;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n-i;j++) cout<<" ";
			for(int j=1;j<=1+(i-1)*2;j++) cout<<"*";
			cout< 
箭形图案 
#include 
using namespace std;
int main(void)
{
	int n; 
    while(cin>>n)
    {
        for(int i=1;i<=n;i++)
	    {
		    for(int j=1;j<=(n+1-i)*2;j++) cout<<" ";
		    for(int j=1;j<=i;j++) cout<<"*";
		    cout< 
牛牛学数列 
#include
int main(void)
{
    int a,b;
    int sum;
    int i,n;
    scanf("%d",&n);
    sum=0;
    for(i=1;i<=n;i++)
    {
        if(i%2==0)
        {
            sum=sum-i;
        }
        else
            sum=sum+i;
    }
    printf("%dn",sum);
    return 0;
}
牛牛学数列2
#include
int main(void)
{
    int n;
    int i;
    double sum=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        sum=sum+1/(double)i;
    }
    printf("%.6lfn",sum);
    return 0;
}
牛牛学数列3
#include
using namespace std;
double sum;
int n;
double solve(int n)
{
	int k=1,temp=0;
	for(int i=1;i<=n;i++)
	{
		if(i&1) temp+=k;
		else temp-=k;
		k+=2;
	}
	return 1.0/temp; 
}
int main(void)
{
	cin>>n;
	for(int i=1;i<=n;i++) sum+=solve(i);
	printf("%.3lf",sum);
	return 0;
}
牛牛学数列4
#include
using namespace std;
int main(void)
{
	int n; cin>>n;
	int sum=0,temp=0;
	for(int i=1;i<=n;i++)
	{
		temp+=i;
		sum+=temp;
	}
	cout< 
牛牛学数列5 
#include
using namespace std;
typedef long long int LL;
LL f[105];
int main(void)
{
	int n;cin>>n;
	f[1]=1,f[2]=1;
	for(int i=3;i<=n;i++) f[i]=f[i-1]+f[i-2];
	cout< 
牛牛学数列6 
#include
using namespace std;
typedef long long int LL;
LL f[105];
int main(void)
{
	int n;cin>>n;
	f[1]=0,f[2]=1,f[3]=1;
	for(int i=4;i<=n;i++) f[i]=f[i-1]+f[i-2]*2+f[i-3];
	cout< 
A+B 
#include
using namespace std;
typedef long long int LL;
LL f[105];
int main(void)
{
	int a,b;
    while(cin>>a>>b) cout< 
多组输入a+b 
#include
int main(void)
{
    int a,b;
    while( scanf("%d %d",&a,&b) != EOF )
    {
        printf("%dn",a+b);
    }
    return 0;
}
多组输入a+b II
#include
using namespace std;
int main(void)
{
	int t; cin>>t;
	while(t--)
	{
		int a,b; cin>>a>>b;
		cout< 
多组数据a+b III 
#include
using namespace std;
int main(void)
{
	int a,b; 
	while(cin>>a>>b,a!=0||b!=0)
	{
		cout< 
[NOIP2018]标题统计 
#include
using namespace std;
int main(void)
{
	string s; getline(cin,s);
	int cnt=0;
	for(int i=0;i 
栗酱数数 
#include 
using namespace std;
bool check(int i)
{
	if(i%4==0) return false;
	while(i)
	{
		int t=i%10;
		if(t==4) return false;
		i/=10;
	}
	return true;
}
int main(void)
{
	int n; cin>>n;
	for(int i=1;i<=n;i++)
	{
		if(check(i)) cout< 
有趣的二进制 
#include
using namespace std;
long long int lowbit(long long int x)
{
	return x&(-x);
}
int main(void)
{
	long long int n;
	while(cin>>n) 
	{
		int cnt=0;
		while(n)
		{
			n=n-lowbit(n);
			cnt++;
		}
		cout< 
[NOIP2006]数列 


https://ac.nowcoder.com/acm/contest/19305/1019
爆搜打表,再查找。

#include
using namespace std;
typedef long long int LL;
LL k,n;
setst;
void dfs(LL sum,LL step)
{
	if(sum>1e15) return;
	st.insert(sum);
	if(step<15) 
	{
		dfs(sum+pow(k,step),step+1);
		dfs(sum,step+1);
	}
}
int main(void)
{
	cin>>k>>n;
	dfs(0,1);
	dfs(1,1);
	int k=0;
	for(auto i=st.begin();i!=st.end();i++)
	{
		if(k==n) cout<<*i< 

就是一个k进制。

#include
typedef long long int LL;
using namespace std;
int main(void)
{
	int k,n; cin>>k>>n;
	LL sum=0;
	for(int i=0;i<31;i++)	
	{
		if(n>>i&1) sum+=pow(k,i);
	}
	cout< 
只能吃土豆的牛牛 
#include
using namespace std;
int main(void)
{
	int t; 
    while(cin>>t)
    {
        for(int i=1;i<=t;i++)
	    {
		    int k; cin>>k;
		    long long int sum=0;
		    for(int i=0;i<=30;i++)
		    {
			    if(k>>i&1) sum+=pow(3,i);
		    }
		    printf("Case #%d: %lldn",i,sum);
	    }
    }
	return 0;
}
[NOIP2015]金币
#include
#include
using namespace std;
int main(void)
{
    int n;cin>>n;
    int sum=0;
    int k=0;
    for(int i=1;i<=100000;i++)
    {
        for(int j=1;j<=i;j++)
        {
            sum+=i;
            k++;
            if(k==n)
            {
                cout< 
托米历险记 


贪心,找钱的时候优先用大的钞票。

#include
using namespace std;
const int N=1e5+10;
int a[10]={25,50,100};
int cnt[10],b[N];
int main(void)
{
	int n; cin>>n;
	for(int i=0;i>b[i];
	for(int i=0;i 
绩点 
#include
using namespace std;
const int N=1e5+10;
double g[N],s[N],sum1,sum2;
int n;
int main(void)
{
	cin>>n;
	for(int i=0;i>g[i]>>s[i];
	for(int i=0;i 
买铅笔 
#include
using namespace std;
const int N=1e5+10;
int a[N],b[N],n;
int maxv=1e9;
int main(void)
{
	cin>>n;
	for(int i=0;i<3;i++)  cin>>a[i]>>b[i];
	for(int i=0;i<3;i++)
	{
		int cnt=n/a[i];
		if(n%a[i]) cnt++;
		maxv=min(maxv,cnt*b[i]);
	}
	cout< 
整数个数 
#include
using namespace std;
const int N=1e5+10;
int a[N],n;
int main(void)
{
	cin>>n;
	for(int i=0;i>s;
		a[s]++;
	}
	cout< 
栗酱的文明2 


https://ac.nowcoder.com/acm/contest/19305/1026
题目给得是任意得两个城池都有边。

#include
using namespace std;
int t,n,a[100005];
bool cmp(int a,int b) {return a>b;}
int main(void)
{
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(int i=0;i>a[i];
		sort(a,a+n,cmp);
		int cnt=n;
		for(int i=0;i 
黑大火与他的猫 
#include
using namespace std;
int main(void)
{
	int t; cin>>t;
	while(t--)
	{
		int n,m; cin>>n>>m;
		int x,cnt=0;
		for(int i=0;i>x;
			if(n>=x) cnt++,n-=x;
		}
		cout< 
[NOIP2000]进制转换【负数进制】 


https://ac.nowcoder.com/acm/contest/19305/1028
余数小于0时。
我们只需要将商+1,余数-除数即可,因为余数(绝对值)一定小于除数,所以这样就可以将余数装换为正数。

#include
using namespace std;
char get(int x)
{
    if(x<=9) return '0'+x;
    else return 'A'+x-10;
}
int main(void)
{
	int n,k; cin>>n>>k;
	string ans;
	int w=n;
	if(n==0)
	{
		printf("0=0(base%d)",k);
		return 0;
	}
	while(n)
	{
		int temp=n%k;
		n=n/k;
		if(temp<0) n++,temp-=k;
		ans+=get(temp);
	}
	reverse(ans.begin(),ans.end());
	printf("%d=",w);
	cout< 
素数判断 
#include
using namespace std;
int t,n;
bool check(int n)
{
	if(n==1) return false;
	for(int i=2;i<=n/i;i++) if(n%i==0) return false;
	return true;
}
int main(void)
{
	cin>>t;
	while(t--)
	{
		cin>>n;
		if(check(n)) puts("Yes");
		else puts("No");
	}
	return 0;
}
Game【有意思】


https://ac.nowcoder.com/acm/contest/19305/1030
由题意可知,最终的集合一定是一个个的质数。

#include
using namespace std;
int main(void)
{
	int cnt=0,n; cin>>n;
	for(int i=2;i<=n/i;i++)
	{
		while(n%i==0) cnt++,n/=i;
	}
    if(n!=1) cnt++;
    cnt--;//cnt是总的质数个数,-1是分解的次数
	if(cnt&1) puts("Johnson");
	else puts("Nancy");
	return 0;
}
[NOIP1999]Cantor表
#include
using namespace std;
int main(void) 
{
	int n; cin>>n;
	for(int i=1;;i++)
	{
		if(n#include
using namespace std;
const int N=1e5+10;
int a[N],n;
int main(void)
{
	cin>>n;
	for(int i=0;i>a[i];
	sort(a,a+n);
	cout< 
成绩统计 
#include 
using namespace std;
const int N=1e5+10;
int a[N],n,sum;
int main(void)
{
	cin>>n;
	for(int i=0;i>a[i],sum+=a[i];
	sort(a,a+n);
	printf("%.2lf %d %d",sum*1.0/n,a[n-1],a[0]);
	return 0;
}
糖果俱乐部


https://ac.nowcoder.com/acm/contest/19305/1034
贪心思想,偶数的直接拿走,奇数的俩俩配对先拿最大的奇数,以此类推。

#include
using namespace std;
const int N=1e5+10;
int a[N],n,sum;
vectorve; 
int main(void)
{
	cin>>n;
	for(int i=0;i>a[i];
		if(a[i]&1) ve.push_back(a[i]);
		else sum+=a[i];
	}
    sort(ve.begin(),ve.end()); reverse(ve.begin(),ve.end());
	for(int i=1;i 
数字计数 
#include
using namespace std;
vectorve;
int n,x;
int a[1005]={0};
mapmp;
int main(void)
{
	cin>>n;
	for(int i=0;i>x;
        if(!mp[x]) ve.push_back(x);
        mp[x]++;
    }
	sort(ve.begin(),ve.end());
    n=ve.size();
	a[0]=ve[n-1]-ve[n-2];
	a[1]=ve[n-1]-ve[1];
	a[2]=ve[n-2]-ve[1];
	a[3]=ve[n-2]-ve[0];
	for(int i=0;i<4;i++) cout< 
热杆上的蚂蚁 
#include
using namespace std;
int main(void)
{
	int n,l,x,ans=0;
	cin>>l>>n;
	for(int i=0;i>x;
		ans=max(ans,min(x,l-x));
	}
	cout< 
焦虑的蚂蚁 
#include
using namespace std;
int n,m,op,x,ans;
int main(void)
{
	cin>>n>>m;
	while(m--)
	{
		cin>>op>>x;
		if(!op) ans=max(ans,x);
		else ans=max(ans,n-x);
	}
	cout< 
拯救小a 
#include
using namespace std;
int main(void)
{
	string s;
	int cnt=0;
	while(getline(cin,s)) 
	{
		if(s==".") break;
		for(int i=0;i 
YoungManDon’tSayFive 
#include
using namespace std;
int main(void)
{
	string s; cin>>s;
	for(int i=0;i 
魔法数字变换 
#include
using namespace std;
int n,cnt;
int main(void)
{
	cin>>n;
	while(n!=1)
	{
		if(n&1) n=n*3+1;
		else n=n/2;
		cnt++;
	}
	cout< 
[NOIP2005]陶陶摘苹果 
#include 
using namespace std;
int a[15],cnt;
int main(void)
{
	for(int i=0;i<11;i++) cin>>a[i];
	for(int i=0;i<10;i++) if(a[10]+30>=a[i]) cnt++;
	cout< 
[NOIP2004]津津的储蓄计划 
#include 
using namespace std;
int main(void)
{
	int sum=0,temp=0,flag=1;
	for(int i=0;i<12;i++)
	{
		int x; cin>>x;
		if(flag) temp+=300,temp-=x;
		if(flag&&temp<0) flag=0,temp=-(i+1);
		if(flag)
		{
			
			sum+=temp/100*100;
			temp=temp%100;
		}
	}
	sum=sum*1.2;
	if(flag) cout< 
[NOIP2002]级数求和 
#include
using namespace std;
int main(void)
{
	int k; cin>>k;
	double sum=0;
	for(int i=1;i<=1000000;i++)
	{
		sum+=1.0/i; 
		if(sum>k)
		{
			cout< 
cayun日常之赏月 
#include
using namespace std;
int a[130],t;
int main(void) 
{
	cin>>t;
	for(int i=0;i<=15;i++) a[i]=i;
	for(int i=16,j=14;i<30;i++,j--) a[i]=j;
	for(int i=0;i<30;i++) a[i+30]=a[i];
	while(t--)
	{
		int b[30]={0}; 
		cin>>b[0]>>b[1];
		for(int i=0;i<60;i++)
		{
			bool flag=true;
			for(int j=0;j<2;j++) if(a[i+j]!=b[j]) flag=false;
			if(flag)
			{
				cout< 
鹏 
#include
using namespace std;
const int N=1e7+10;
int a[N],n,cnt;
int main(void)
{
	cin>>n;
	for(int i=0;i>a[i];
	for(int i=0;i 
D博弈与核心能源动力 
#include
using namespace std;
int main(void)
{
	int m,k,g,p; cin>>m>>k>>g>>p;
	long long int cnt=0;
	if(m>0)cnt+=m/p;
	k+=cnt,g+=cnt;
	while(k>=2||g>=4)
	{
		int temp=k/2+g/4;
		cnt+=temp; 
		k=k%2+temp;
		g=g%4+temp;
	}
	cout< 
好数 
#include
using namespace std;
int main(void)
{
	int t; 
    while(cin>>t)
    {
        while(t--)
	    {
		    int l,r; cin>>l>>r;
		    int cnt=0;
		    for(int i=max(l,100);i<=r;i++)
		    {
                int a=i/100;
                int b=i/10;
			    int sum=a*b;
			    if((sum%10)==(i%10)) cnt++; 
		    }
		    cout< 
3和5和7 
#include
using namespace std;
int n; 
int main(void)
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		if(i%3==2&&i%7==2&&i%5==3) cout< 
回文对称数 
#include
using namespace std;
int n;
bool check(int x)
{
	string s=to_string(x);
	string ss=s; reverse(ss.begin(),ss.end());
	return s==ss;
}
int main(void)
{
	cin>>n;
	for(int i=1;i<=n;i++) if(check(i)) cout< 
数位之和 
#include
using namespace std;
int main(void)
{
	string s; cin>>s;
	int sum=0;
	for(int i=0;i 
箱子归位 
#include 
using namespace std;
string s[100];
int main(void)
{
	for(int i=0;i<5;i++) getline(cin,s[i]);
	int x,y;
	for(int i=0;i<5;i++) 
	{
		int k=0;
		for(int j=0;j#include
using namespace std;
int t;
map>mp;
int main(void)
{
	cin>>t;
	mp['0']={2,4};
	mp['1']={0,2};
	mp['2']={3,2};
	mp['3']={3,2};
	mp['4']={1,3};
	mp['5']={3,2};
	mp['6']={3,3};
	mp['7']={1,2};
	mp['8']={3,4};
	mp['9']={3,3};
	while(t--)
	{
		char c; cin>>c;
		cout< 
[NOIP2009]多项式输出 
#include
using namespace std;
int main(void)
{
	int n; cin>>n;
	int flag=0;
	for(int i=n;i>=0;i--)
	{
		int x; cin>>x;
		if(x==0) continue;
		if(x>0)
		{
			if(flag) cout<<"+";
			if(i)
			{
				if(x==1) printf("x");
				else printf("%dx",x);
				if(i!=1&&i) printf("^%d",i);
			}
			else cout< 
更相减损术 
#include
using namespace std;
int gcd(int a,int b)
{
	return b?gcd(b,a%b):a;
}
int main(void)
{
	int a,b; cin>>a>>b;
	cout<					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5713615.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存