齐天大圣到此一游

这篇文章讲述了如何通过编程解决一个关于孙悟空分身在如来佛手指上留下“齐天大圣到此一游”次数的问题,使用C++实现了一个简单的计数算法,统计每根手指上被写的次数。
摘要由CSDN通过智能技术生成

大家好,第三次创作,欢迎高手指导,谢谢!

不定时更新,题目+解析+评测结果+完整程序,有问题有瑕疵欢迎评论区留言!



1.题目

1. K15340 齐天大圣到此一游

题目描述

在某个平行世界里,如来是将两只手并排放在一起和孙悟空打赌的。也就是说只要孙悟空能飞出这两只手,就不会被如来抓住。孙悟空为了飞出如来的手掌心,将自己分身成了若干个,每一个孙悟空遇到如来的手指时都会以为自己飞到了尽头,于是这个分身就会在连续的几根手指上的每根都留下“齐天大圣到此一游”几个字。

假设如来佛两只手的十根手指自左向右依次编号为1~10,每根手指都足够大,可以写的下足够多的字。孙悟空总共有n个分身(算上自己),第i个分身会在连续的编号为[ai,bi]的手指上留下一句“齐天大圣到此一游”。当然,孙悟空的全部n个分身最后都没能逃过如来的掌心。请问最终如来的每根手指上各被写下了几句“齐天大圣到此一游”?

输入格式

输入n+1行。

第一行一个整数n,表示孙悟空分身的个数,n的范围在[1,10]以内。

接下来n行,每行输入两个整数ai和bi,表示第i个分身会在连续的编号为[ai,bi]的手指上留下一句“齐天大圣到此一游”。1<=ai<=bi<=10。

输出格式

输出一行10个整数,每个整数表示如来的这根手指上被孙悟空写下了几句“齐天大圣到此一游”(如果这根手指没被留字就输出0),整数与整数之间以一个空格隔开。

输入输出样例

输入样例1:复制
2 2 5 3 6
输出样例1:复制
0 1 2 2 2 1 0 0 0 0

说明:

样例说明:

孙悟空共有2个分身:

第1个分身在第2~5根手指上留字;

第2个分身在第3~6根手指上留字。

因此最终如来的每根手指上留下的“齐天大圣到此一游”的句数为:

第1根手指0句;

第2根手指1句;

第3根手指2句;

第4根手指2句;

第5根手指2句;

第6根手指1句;

第7根手指0句;

第8根手指0句;

第9根手指0句;

第10根手指0句。

【耗时限制】1000ms 【内存限制】128MB


 2.解析

这道题看起来很难,实际上很简单,我们直接开始写程序!


1.变量
#include<bits/stdc++.h>
using namespace std;
int n,a,b,cnt[11];
int main()
{
	
}

n:分身个数(算上自己)

a,b:表示第i个分身会在连续的编号为[ai,bi]的手指上留下一句“齐天大圣到此一游”。

cnt[]:如来的每根手指上留下的“齐天大圣到此一游”的句数。


2.输入 
#include<bits/stdc++.h>
using namespace std;
int n,a,b,cnt[11];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a>>b;
	}
}

循环输入。


3.循环标记
#include<bits/stdc++.h>
using namespace std;
int n,a,b,cnt[11];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a>>b;
		for(int i=a;i<=b;i++){
			cnt[i]++;
		}
	}
}

挨个遍历标记。


4.循环输出
#include<bits/stdc++.h>
using namespace std;
int n,a,b,cnt[11];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a>>b;
		for(int i=a;i<=b;i++){
			cnt[i]++;
		}
	}
	for(int i=1;i<=10;i++){
		cout<<cnt[i]<<' ';
	}
}

循环输出桶计数。


3.评测结果


4.完整程序

#include<bits/stdc++.h>
using namespace std;
int n,a,b,cnt[11];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a>>b;
        for(int i=a;i<=b;i++){
            cnt[i]++;
        }
    }
    for(int i=1;i<=10;i++){
        cout<<cnt[i]<<' ';
    }
}



谢谢大家,给个赞呗!

  • 33
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值