南海云课堂春季11(T)K1 拓展:单调队列

问题A 幸运数

Description

我们将一个正整数分解成若干个质因数(质数因子)的乘积,若得到的质因数的个数也为质数,则称这个整数为幸运数。例如 12 = 2 × 2 × 3,它有 3 个质因数,分别是 2、2、3,而 3 也是质数,所以 12 是一个幸运数;210 不是一个幸运数,因为 210 = 2 × 3 × 5 × 7,它有 4 个质因数,分别是 2、3、5、7,而 4 不是质数。

现在,请你编程求:不大于 n 的所有幸运数。

Format

Input

输入一行一个整数 n。

Output

若干行,每行一个幸运数。要求按照从小到大的顺序输出。

Samples

Sample Input 1

12

Sample Output 1

4
6
8
9
10
12

Limitation

对于 50% 的数据,n ≤ 1000;

对于 80% 的数据,n ≤ 10000;

对于 100% 的数据,2 ≤ n ≤ 100000。

#include<bits/stdc++.h>
using namespace std;
const int maxx=1e5+15;
long long n,a[100005],b;
int main()
{
	a[0]=1;
	a[1]=1;
	for(register int i=2;i<=sqrt(maxx);++i)
	{
		for(register int j=i+i;j<=maxx;j+=i)
		{
			a[j]=1;
		}
	}
	cin>>n;
	for(register int i=4;i<=n;++i)
	{
		if(a[i]==1)
		{
			int num=i,num2=0;
			for(int j=2;num!=1;)
			{
				if(num%j==0) num/=j,num2++;
				else
				{
					while(num%j!=0) j++;
				}
			}
			if(a[num2]==0) cout<<i<<endl;
		}
	}
	return 0;
}

问题B 字符串展开

Description

对于一个字符串,如果其中含有类似于“d - h”或者“4 - 8”的字符子串,我们就把它当作一种简写。还原输出此字符串时,用连续递增的字母或数字串替代其中的减号。上面两个子串分别输出为“defgh” 和 “45678”。具体约定如下:

(1)遇到下面的情况需要对字符串进行展开:在输入的字符串中,出现了减号 “-”,减号两侧同为小写字母或同为数字,且按照 ASCII 码的顺序,减号右边的字符严格大于左边的字符。

(2)如果减号右边的字符恰好是左边字符的后继,只删除中间的减号,例如:“d - e” 应输出为 “de”,“3 - 4”应输出为 “34”。如果减号右边的字符按照 ASCII码的顺序小于或等于左边字符,输出时,要保留中间的减号,例如:“d - d” 应输出为 “d - d”,“3 - 1” 应输出为“3 - 1”。

现在,输入一个字符串,请将此字符串展开输出。

Format

Input

输入一行一个字符串,长度不超过 200,仅由数字、小写字母和减号 “-” 组成。行首和行末均无多余空格。

Output

输出一行一个字符串,为展开后的字符串。

Samples

Sample Input 1

abcs-w-y1234-9s-4zz

Sample Output 1

abcstuvwxy123456789s-4zz

 

#include<bits/stdc++.h>
using namespace std;
string s;
int main()
{
	cin>>s;
	for(int i=0;i<s.size();i++)
	{
		if(s[i]!='-')
		{
			cout<<s[i];
		}
		if(s[i]=='-')
		{
			if(s[i-
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值