函数专题练习

函数练习

1.各位数字之和

题目描述
输入一个任意位正整数,输出各位数字之和。

输入
输入一行,1 个整数n,n ≤ 2147483647(INT_MAX)。

输出
输出一行,1 个整数。

样例
输入 复制
123454321
输出 复制
25

#include<bits/stdc++.h>
using namespace std;
int s=0;
int sum(int x){
	while(x!=0){
		s+=x%10;
		x/=10;
	}
	return s;
}
int main()
{
	int n;
	cin>>n;
	cout<<sum(n);
	return 0;
}
  1. 数字之和为13的整数
    题目描述
    求出1000以内的整数,使其数字之和为13,每行输出8个数。 例如:

数85,其数字之和为8+5=13

数373,其数字之和为3+7+3=13

输入

输出
所有符合条件的整数,按从小到大的顺序输出,每行8个,数与数之间用一个空格隔开。

样例
输入 复制

输出 复制

#include<bits/stdc++.h> 
using namespace std;
int main(){
	int temp,sum,cnt=0; 
	for(int i=13;i<=1000;i++){
		temp=i;
		sum=0;
		while(temp){
			sum+=temp%10;
			temp/=10;
		}
		if(sum==13){
			cout<<i<<" ";
			cnt++;
		}
		if(cnt==8){
			cout<<endl;
			cnt=0;
		}
	}
	return 0;	
}

倒序数

时间限制: 1.000 Sec 内存限制: 128 MB
提交: 3324 解决: 2765
[命题人:][下载数据: ?]
题目描述
输入一个任意位数的正整数,将这个数倒序组成一个新数并输出。

输入
输出一行,一个整数n。(0 ≤ n ≤ 10亿)

输出
输入一行,一个整数,表示n的倒序数。

样例
输入1 复制
12345
输出1 复制
54321
输入2 复制
520
输出2 复制
25

#include<bits/stdc++.h>
using namespace std;
int as(int x)
{
	int s=0;
	while(x)
	{
		s=s*10+x%10;
		x/=10;
	}
	return s;
}
int main()
{
	int n;
	cin>>n;
	cout<<as(n);
}

约数和

时间限制: 1.000 Sec 内存限制: 128 MB
提交: 1774 解决: 1149
[命题人:][下载数据: ?]
题目描述
输入一个自然数n,求这个数所有约数的和。
输入
输入一个自然数n(n<1000000000)。
输出
一个正整数。
样例
输入 复制
25
输出 复制
31

#include<bits/stdc++.h>
using namespace std;
long long hhh(long long x) 
{
	long long s=0;
	for(int i=1;i<=sqrt(x);i++)
	{
		if(x%i==0)
		{
			s+=i+x/i;
		}
		if(i*i==x)
		{
			s-=i;
		}
		
	}
	return s;
}
int main()
{
	long long n;
	cin>>n;
	cout<<hhh(n);
	
	return 0;	
} 

真约数和

时间限制: 1.000 Sec 内存限制: 128 MB
提交: 2526 解决: 1839
[命题人:][下载数据: ?]
题目描述
一个数的“真约数”,就是指不包括自己的约数。例如:

6 的真约数有:1、2、3。6的真约数和为 1+2+3=6。

12 的真约数有:1、2、3、4、6。12的真约数和为 16。

15 的真约数有:1、3、5。 15的真约数和为 9。

49的真约数有:1、7。 49的真约数和为 8。

97654321是个质数。 97654321的真约数和为 1。

现在,输入一个整数,很快地算一下它的所有真约数的和,会有什么有趣的发现呢。

输入
一个整数 n(0 < n <=20 亿)。

输出
一个整数,表示 n 的所有真约数的和。

样例
输入 复制
220
输出 复制
284

#include<bits/stdc++.h>
using namespace std;
long long hhh(long long x) 
{
	long long s=0;
	for(int i=1;i<=sqrt(x);i++)
	{
		if(x%i==0)
		{
			s+=i+x/i;
		}
		if(i*i==x)
		{
			s-=i;
		}
		
	}
	return s;
}
int main()
{
	long long n;
	cin>>n;
	cout<<hhh(n)-n;
	return 0;	
} 

判素数
题目描述
任意输入一个整数,判断它是否为素数。是的话输出"1",不是的话输出"0"。

输入
输入一个正整数

输出
1或者0

样例
输入 复制
6
输出 复制
0

#include<bits/stdc++.h>
using namespace std;
bool isprime(int x){
	if(x<2)return 0;
	for(int i=2;i<=sqrt(x);i++){
		if(x%i==0)return 0;
	}
	return 1;
}
int main(){
	int n;
	cin>>n;
	cout<<isprime(n);
	return 0;
}

约数和判质

时间限制: 1.000 Sec 内存限制: 128 MB
提交: 1175 解决: 933
[命题人:][下载数据: ?]
题目描述
从键盘上任意输入一个数n,请你编程求这个数的约数和s,再判断s是否为质数。

输入
输入一个自然数n

输出
T或者F

样例
输入 复制
6
输出 复制
F

#include<bits/stdc++.h>
using namespace std;
long long ysh(long long x) 
{
	long long s=0;
	for(int i=1;i<=sqrt(x);i++)
	{
		if(x%i==0)
		{
			s+=i+x/i;
		}
		if(i*i==x)
		{
			s-=i;
		}
	}
	return s;
}
bool zsh(long long x)
{
	if(x<2)return 0;
	for(int i=2;i<=sqrt(x);i++)
	{
		if(x%i==0)
		{
			return 0;
		}
	
	}	
	return 1;
}
int main()
{
	long long n;
	cin>>n;
	if(zsh(ysh(n)))cout<<"T";
	else cout<<"F";
	
	return 0;
}



判回文数

时间限制: 1.000 Sec 内存限制: 128 MB
提交: 1283 解决: 1187
[命题人:][下载数据: ?]
题目描述
从左向右读与从右向左读是同一个数的数为回文数。比如19391是回文数。

输入一个任意位数的正整数,判断这个数是否回文数。是则输出‘yes’,否则输出‘no’。

输入
输入一行,一个整数n (1≤n≤21亿)。

输出
输出一行,一个字符串。

是回文数输出“yes”,不是回文数输出“no”。

样例
输入 复制
19391
输出 复制
yes

#include<bits/stdc++.h>
using namespace std;
void hw(long long x){
	long long s=0,t=x;
	bool f=1;
	while(x){
		s=s*10+x%10;
		x/=10;
	}
	if(s==t){
		cout<<"yes";
	}
	else cout<<"no";
}
int main()
{
	long long n;
	cin>>n;
	hw(n); 
	return 0;
}

回文完全平方数

时间限制: 1.000 Sec 内存限制: 128 MB
提交: 960 解决: 782
[命题人:][下载数据: ?]
题目描述
一个两位以上的自然数,如果左右数字对称,就称为回文数,

编程找出所有不超过6位数字的回文数,同时又是完全平方数的数。

比如:121是回文数,又是11的平方,所以121满足条件。

输入

输出
若干行,每行一个回文完全平方数,从小到大输出。

样例
输入 复制

输出 复制
121
……
12321
……

#include<bits/stdc++.h>
using namespace std;
bool hw(long long x)
{
	long long s=0,t=x;
	while(x)
	{
		s=s*10+x%10;
		x/=10;
	}
	return s==t;
}
int main()
{
	
	for(int i=10;i<=999999;i++)
	{
		int x=sqrt(i); 
		if(x*x==i&&hw(i))
		{
			cout<<i<<endl;
		}
	}
}


哥德巴赫猜想1-一个拆两个

时间限制: 1.000 Sec 内存限制: 128 MB
提交: 663 解决: 456
[命题人:][下载数据: ?]
题目描述
哥德巴赫提出了以下的猜想:任何一个大于2的偶数都可以表示成2个质数之和。
质数是指除了1和本身之外没有其他约数的数。
如2和11都是质数。而6不是质数,因为6除了约数1和6之外还有约数2和3。
需要特别说明的是1不是质数。
请你编一个程序验证哥德巴赫猜想。
输入
一个大于 2 的偶数 n。
输出
多行,由两个素数之和组成的表达式,每组第一个数字要从小到大排列。
一组或多组由两个素数之和组成的表达式。
每组第一个数字要从小到大排列。
样例
输入 复制
14
输出 复制
3+11
7+7

#include<iostream>
#include<math.h>
using namespace std;
int ss(int x)
{
	if(x<2)return 0;
    for(int i=2;i<=sqrt(x);i++)
    {
        if(x%i==0) return 0;
    }
    return 1;
}
int main()
{
    int n;
    cin>>n;
    for(int i=2;i<=n/2;i++){
    	if(ss(i)){
    		if(ss(n-i)){
    			cout<<i<<"+"<<n-i<<endl;
			}
		}
	}
    return 0;
}

午夜烧脑

时间限制: 1.000 Sec 内存限制: 256 MB
提交: 142 解决: 119
[命题人:][下载数据: ?]
题目描述
小J 将在2023年的最后一天参加一场名为“午夜烧脑”的比赛。比赛于20:00 开始,持续四个小时,正好到午夜。届时会有n个问题,按难度排序,即问题1是最简单的,问题n是最难的。小J 知道他需要 5*i 分钟来解决第 i 个问题。

小J 的朋友组织了一个除夕聚会,他想在午夜或更早的时候到场,当然他得先参加比赛。

从家到聚会地点需要 k 分钟。问题是如果小J 想准时赶到聚会地点,他最多能AC(信心满满,交的题目都过)多少道题目?

输入
一行,两个整数 n 和 k(1≤n≤10,1≤k≤240),表示比赛中的问题数和小J 从家里到聚会地点的时间。
输出
一个整数,表示小J 能够解决的最大问题数,以便他能够在午夜或更早的时候到达聚会地点。
样例
输入1 复制
3 222
输出1 复制
2
输入2 复制
4 190
输出2 复制
4
输入3 复制
7 1
输出3 复制
7

#include <iostream>
using namespace std;
void ac(int n,int t){
	t=4*60-t;
	int s=0;
	for(int i=1;i<=n;i++){
		s+=5*i;
		if(s>t){
			cout<<i-1;
			return;
		}
	}
	cout<<n;
}
int main()
{
	int n,t;
	cin>>n>>t;
	ac(n,t);
	return 0;
}

灯带

时间限制: 1.000 Sec 内存限制: 256 MB
提交: 157 解决: 100
[命题人:][下载数据: ?]
题目描述
Jz 镇市民广场一处灯带连成一条直线,由四种颜色的灯泡组成:红、蓝、黄、绿。灯带的制作规则为:任取四个连续的灯泡,不会有同颜色的存在。例如,灯带可以看起来像"YBGRYBGRYB"、“RYGBRYGBRYG”、"GYRBG"这样,但不能像 “BRYGR”、"GRBYRBYGR "或 "GBYGYG"这样。这里 "R"代表红色,"B"表示蓝色,“Y”-黄色,“G”-绿色。

由于时间久远,一些灯泡已经熄灭不在工作,但每一种颜色至少有一个灯还亮着,利用给出的灯光排列信息,计算四种颜色的坏灯泡数量。

输入
一行,一个长为 n 的字符串s (4 ≤ n ≤ 100),它描述了灯带的运行状态,其中第 i 个字符描述了第 i 个灯泡的颜色:
‘R’ - 灯泡是红色的;
‘B’ - 灯泡是蓝色的;
‘Y’ - 灯泡是黄色的;
‘G’ - 灯泡是绿色的;
‘!’ - 灯泡坏了。
除了上述的五个字符外,字符串s不包含其他字符。
数据保证给定的字符串 ‘R’、‘B’、‘Y’ 和 ‘G’ 四个字母各至少出现一次。
输出
四个整数 sr, sb, sy, sg,表示红、蓝、黄、绿颜色坏灯泡的数量。
样例
输入1 复制
RYBGRYBGR
输出1 复制
0 0 0 0
输入2 复制
!RGYB
输出2 复制
0 1 0 0
输入3 复制
!!!YGRB
输出3 复制
1 1 1 1
输入4 复制
!GB!RG!Y!
输出4 复制
2 1 1 0

#include<bits/stdc++.h>
using namespace std;
string s;
int a[5]={};
void dp(int sr,int sb,int sy,int sg){
	cin>>s;
	for(int i=0;i<s.size();i++){
		if(s[i]=='R')sr=i%4;
		else if(s[i]=='B')sb=i%4;
		else if(s[i]=='Y')sy=i%4;
		else if(s[i]=='G')sg=i%4;
		else a[i%4]++;
	}
	cout<<a[sr]<<" "<<a[sb]<<" "<<a[sy]<<" "<<a[sg];
}
int main()
{
	int sr,sb,sy,sg;
	dp(sr,sb,sy,sg);
	return 0;	
} 

挑战求和4

时间限制: 1.000 Sec 内存限制: 128 MB
提交: 691 解决: 602
[命题人:][下载数据: ?]
题目描述
输入一个正整数n,求1!-2!+3!-4!+……+N!的结果.
输入
一个正整数n
样例
输入 复制
3
输出 复制
5
提示
5=1-(12)+(12*3)

#include<bits/stdc++.h>
using namespace std;
int jc(int x){
	int c=1;
	int s=0;
	for(int i=1;i<=x;i++){
		c*=i;
		if(i%2==0){
			s-=c;
		}
		else s+=c;	
	}
	return s;
}
int main()
{
	int x;
	cin>>x;
	cout<<jc(x);
	return 0;	
} 

【入门】喜羊羊运动会——比比口算能力

时间限制: 1.000 Sec 内存限制: 64 MB
提交: 5097 解决: 3569
[命题人:][下载数据: ?]
题目描述
题目很简单,考官给出3个整数a、b、c。 M=max( a, b, c ) / [ max( a+b, b, c ) * max( a, b, b+c ) ], max(a,b,c)表示a,b,c三个整数中最大的一个整数,max(a+b,b,c)和max(a,b,b+c)以此类推。试计算M的值(保留六位小数)。 如a=7,b=4,c=6。 则M=max(7, 4, 6)/ [ max( 7+4, 4, 6 ) * max( 7, 4, 4+6 ) ]=7/ [11*10]=0.063636
输入
一行,三个整数a,b,c(1 <= a,b,c <=10000 )。
输出
一行,一个整数M(保留六位小数)。
样例
输入 复制
7 4 6
输出 复制
0.063636

#include<bits/stdc++.h>
using namespace std;
void ks(int a,int b,int c)
{
	double m,m1,m2,m3;
	m1=max(max(a,b),c);
	m2=max(max(a+b,b),c);
	m3=max(max(a,b),b+c);
	m=1.0*m1/(m2*m3);
	cout<<fixed<<setprecision(6)<<m;
}
int main()
{
	int a,b,c; 
	cin>>a>>b>>c;
	ks(a,b,c);
	return 0;
}

【入门】挛生素数

时间限制: 1.000 Sec 内存限制: 16 MB
提交: 8408 解决: 4997
[命题人:][下载数据: ?]
题目描述
我们定义,如果a和a+2都是素数(如5和7),那么我们就称a和a+2是一对挛生素数。请写一个程序找出2-N之间的所有挛生素数。
输入
一个整数N( 2 < N < 1000 )。
输出
若干行,每行两个整数,即一对挛生素数。
样例
输入 复制
10
输出 复制
3 5
5 7

#include<bits/stdc++.h>
using namespace std;
bool s(int n)
{
	if(n<2)return 0;
	for(int i=2;i<=sqrt(n);i++)
	{
		if(n%i==0)return 0;
	}
	return 1;
}
int main()
{
	int n;
	cin>>n;
	for(int i=2;i<=n-2;i++)
	{
		if(s(i)==1&&s(i+2)==1)cout<<i<<" "<<i+2<<endl;
	}
	return 0; 
}

哥德巴赫猜想2-多个拆两个

时间限制: 1.000 Sec 内存限制: 16 MB
提交: 8477 解决: 5307
[命题人:][下载数据: ?]
题目描述
任一个大于等于4的偶数都可以拆分为两个素数之和。

输入
一个整数n( 4 <= n <= 200 )

输出
将小于等于n的偶数拆分为2个质数之和,列出所有方案!

样例
输入 复制
10
输出 复制
4=2+2
6=3+3
8=3+5
10=3+7
10=5+5

#include<bits/stdc++.h>
using namespace std;
bool s(int n)
{
	if(n<2)return 0;
	for(int i=2;i<=sqrt(n);i++)
	{
		if(n%i==0)return 0;
	}
	return 1;
}
int main()
{
	int n;
	cin>>n;
	for(int i=2;i<=n;i++){
		if(i%2!=0)continue;
		for(int j=1;j<=i/2;j++)
		{
			if(s(j)==1&&s(i-j)==1)cout<<i<<"="<<j<<"+"<<i-j<<endl;
		}
	}
	
	return 0; 
}

【基础】亲密数对

时间限制: 2.000 Sec 内存限制: 16 MB
提交: 8150 解决: 3936
[命题人:][下载数据: ?]
题目描述
键盘输入N,N在2至2000之间,求2至N中的亲密数对。

就是A的(去掉1和自己的)因子和等于B,B的(去掉1和自己)因子和等于A,且A≠B。

如48和75是亲密数对。

48的因子和为2+3+4+6+8+12+16+24=75,

而75的因子和为3+5+15+25=48。

输入
只有一行,为一个整数N( 2<=N<=2000 )

输出
输出若干行,每行两个整数(用一个空格隔开)。

样例
输入 复制
200
输出 复制
48 75
75 48
140 195
195 140

#include<bits/stdc++.h>
using namespace std;
int ys(int x){
	int s=0;
	for(int i=2;i<=sqrt(x);i++){
		if(x%i==0){
			s+=i+x/i;
		}
		if(i*i==x){
			s-=i;
		}
	}
	return s;
}
int main()
{
	int n;
	cin>>n;
	for(int i=2;i<=n;i++){
		int y=ys(i);
		if(ys(y)==i&&i!=y&&y<n){
			cout<<i<<" "<<y<<endl;
		}
	}
	return 0;
}

求组合的个数

时间限制: 1.000 Sec 内存限制: 128 MB
提交: 2268 解决: 2182
[命题人:][下载数据: ?]
题目描述
从1到n这些整数中,选m个数的组合的个数。用这个公式计算:

在这里插入图片描述

n!是n的阶乘表示123*……*n

输入
两个整数 n m
输出
一个整数
样例
输入 复制
4 2
输出 复制
6
提示
组合个数的结果肯定是整数。
n,m<=10

关于组合还有一个递推公式
C(n,m)=C(n-1,m)+C(n-1,m-1)
C(n,0)=1
C(x,x)=1

#include<bits/stdc++.h>
using namespace std;
long long jc(long long a)
{
	long long s=1;
	for(long long i=1;i<=a;i++)
	{
		s*=i;
	}
	return s;
}
int main()
{
	long long n,m;
	cin>>n>>m;
	cout<<jc(n)/(jc(m)*jc(n-m));
	return 0;
}

哥德巴赫猜想4-先统计方案

时间限制: 1.000 Sec 内存限制: 64 MB
提交: 1571 解决: 1047
[命题人:][下载数据: ?]
题目描述
求出哥德巴赫猜想的所有解(将一个大于9的奇数拆分成三个素数之和),并按从小到的顺序写出。
输入
一行,一个大于9的奇数(<100)。
输出
第一行,一个整数N,表示解的总数。 第2-N+1行,每行一个解。
样例
输入 复制
15
输出 复制
3
15=2+2+11
15=3+5+7
15=5+5+5

#include<bits/stdc++.h>
using namespace std;
bool ss(int x){
	if(x<2)return 0;
	for(int i=2;i<=sqrt(x);i++){
		if(x%i==0)return 0;
	}
	return 1;
}
int main()
{
	int x,s=0;
	cin>>x;
	for(int i=2;i<=x/3;i++){
		for(int j=i;j<=x/2;j++){
			int k=x-i-j;
			if(ss(i)&&ss(j)&&ss(k)&&k>=j){
				s++;
			}
		}
	}
	cout<<s<<endl;
	for(int i=2;i<=x/3;i++){
		for(int j=i;j<=x/2;j++){
			int k=x-i-j;
			if(ss(i)&&ss(j)&&ss(k)&&k>=j){
				cout<<x<<"="<<i<<"+"<<j<<"+"<<k<<endl;
			}
		}
	}
	return 0;
}

寻找完美数4-k重完全数

时间限制: 1.000 Sec 内存限制: 128 MB
提交: 413 解决: 349
[命题人:][下载数据: ?]
题目描述
一个数n为k重完全数,当且仅当S(n)=kn,S(n)表示n的所有约数之和,
如6就是一个2重完全数,因为6的约数(即能被6整除的自然数)为1、2、3、6,所以S(6)=1+2+3+6=2
6。
现在需要你找出1到n之间所有的k重完全数。
输入
输入数据仅有一行包含两个整数n和k。其中n≤50000,k<5。
输出
按从小到大的次序依次输出求得的k重完全数,每行输出一个数。
样例
输入 复制
100 2
输出 复制
6
28

#include<bits/stdc++.h>
using namespace std;
int ysh(int x){
	int s=0;
	for(int i=1;i<=sqrt(x);i++){
		if(x%i==0)s+=i+x/i;
		if(i*i==x)s-=i;
	}
	return s;
}
int main()
{
	int x,y;
	cin>>x>>y;
	for(int i=1;i<=x;i++){
		int z=ysh(i);
		if(z==y*i){
			cout<<i<<endl;
		}
	}
	return 0;
}

最大公约数2

时间限制: 1.000 Sec 内存限制: 128 MB
提交: 1026 解决: 906
[命题人:][下载数据: ?]
题目描述
求两个自然数M和N的最大公约数。(0<=m,n<=100000000)
输入
输入一行,包括两个整数.
输出
输出只有一行(这意味着末尾有一个回车符号),包括1个整数。
样例
输入 复制
45 60
输出 复制
15

#include<bits/stdc++.h>
using namespace std;
int gcd(int x,int y){
	int r=x%y;
	while(r){
		x=y;
		y=r;
		r=x%y;
	}
	return y;
}
int main()
{
	int x,y;
	cin>>x>>y;
	cout<<gcd(x,y);
	return 0;
}

密码尝试

时间限制: 1.000 Sec 内存限制: 256 MB
提交: 105 解决: 62
[命题人:][下载数据: ?]
题目描述
小J 成功进入了他最喜欢的网站 Jzoj.cn。小J 在他访问过的网站上注册使用了 n 个不同的密码,但他不记得自己在注册 Jzoj.cn 时到底指定了哪个密码。

小J 会按照密码长度不递减的顺序输入密码,他还会按照任意顺序输入相同长度的密码。当 小J 输入正确的密码后,他就可以立即登录网站。小J 不会重复输入任何密码。

对 小J 来说,输入任何密码都只需一秒钟的时间。但如果 小J 输入了 k 次错误密码,那么他需要等待 5 秒钟才能进行下一次尝试。小J 每次尝试都是立即进行的,也就是说,在小J 能够输入密码的每一时刻,他都在进行尝试。

请计算在最好的情况下(尽可能缩短输入时间)和在最坏的情况下(尽可能延长输入时间),小J 需要多少秒才能输入正确的密码从而登陆 Jzoj.cn。

输入
第一行,两个整数 n 和 k(1 ≤ n,k ≤ 100),即小J 的密码数和尝试失败的次数,尝试失败后,网站访问将被阻止 5 秒。
接下来的 n 行,每行一个密码,由英文字母和数字组成的非空字符串,长度不超过 100 个字符。
最后一行,小J 的 Jzoj.cn 的密码。保证小J 的密码等于他的 n 个密码中的某个密码。
输出
两个整数,分别表示小J 在最好和最坏情况下成功登陆 Jzoj.cn 的时间。
样例
输入1 复制
5 2
cba
abc
bb1
abC
ABC
abc
输出1 复制
1 15
输入2 复制
4 100
11
22
1
2
22
输出2 复制
3 4
提示
【样例解释】
样例1。所有密码的长度相同,小J 可以在第一次尝试和最后一次尝试时输入正确的密码。如果他在第一次尝试时输入正确的密码,那么他正好花费 1 秒钟。如果在最后一次尝试时输入密码,那么他在此之前又输入了 4 个密码。他先花 2 秒钟输入前 2 个密码,然后等 5 秒钟,然后他再花 2 秒钟输入 2 个错误密码,再次等待 5 秒钟,最后再花 1 秒钟输入正确密码。总之,在最坏的情况下,他能在 15 秒内成功登陆。
样例2。所需的密码长度为 2,小J 会输入所有长度为 1 的密码,这样就会花费 2 秒钟。然后,在最好的情况下,他立即输入正确的密码,最好情况的答案是 3,但在最坏的情况下,他输入了长度为 2 的错误密码,然后才输入正确的密码,总共花费了 4 秒钟。

#include<bits/stdc++.h>
using namespace std;
string s;
int n,k,maxs,mins,a[110];
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>s;
		int len=s.size();
		a[len]++;
	}
	cin>>s;
	int lens=s.size();
	for(int i=1;i<=100;i++){
		a[i]=a[i-1]+a[i];
	}
	mins=a[lens-1]+1;
	maxs=a[lens];
	mins=(mins-1)/k*5+mins;
	maxs=(maxs-1)/k*5+maxs;
	cout<<mins<<" "<<maxs;
	return 0;
}

【基础】约瑟夫问题

时间限制: 1.000 Sec 内存限制: 16 MB
提交: 10652 解决: 6542
[命题人:][下载数据: ?]
题目描述
有M个人,其编号分别为1-M。这M个人按顺序排成一个圈。现在给定一个数N,从第一个人开始依次报数,数到N的人出列,然后又从下一个人开始又从1开始依次报数,数到N的人又出列...如此循环,直到最后一个人出列为止。
输入
输入只有一行,包括2个整数M(8 <= M <= 15 ),N( 5 <= N <= 32767 )。之间用一个空格分开。
输出
按出列顺序输出出列人的编号,每行一个整数。
样例
输入 复制
8 5
输出 复制
5
2
8
7
1
4
6
3

#include<bits/stdc++.h>
using namespace std;
int i,top,a[35],s=0,k=0,n,m;
int main(){
	cin>>m>>n;
	for(int i=1;i<=m;i++){
		a[i]=0;//全都未出列
	}
	top=1;
	i=top;
	while(s<m){
		if(i>m)i=1;
		if(a[i]==0)k++;
		if(k==n){
			a[i]=1;
			cout<<i<<endl;
			k=0;
			s++;
		}
		i++;
	}
	return 0;
}

【入门】纯粹素数

时间限制: 1.000 Sec 内存限制: 16 MB
提交: 11485 解决: 5330
[命题人:][下载数据: ?]
题目描述
纯粹素数是这样定义的:一个素数,去掉最高位,剩下的数仍为素数,再去掉剩下的数的最高位,余下的数还是素数。这样下去一直到最后剩下的个位数也还是素数。
2347 是素数;347 是素数;47 是素数;7是素数;所以2347是个纯粹的素数。
请求出所有小于n的四位的纯粹素数。
输入
一个整数
输出
按从小到大的顺序输出若干个纯粹素数,每行一个。
样例
输入 复制
1225
输出 复制
1013
1097
1103
1223

#include<bits/stdc++.h>
using namespace std;
int ss(int x){
	if(x<2)return 0;
	for(int i=2;i<=sqrt(x);i++){
		if(x%i==0)return 0;
	}
	return 1;
}
int main()
{
	int x;
	cin>>x;
	for(int i=1000;i<=x;i++){
		if(ss(i)&&ss(i%1000)&&ss(i%100)&&ss(i%10))cout<<i<<endl;	
	}
	return 0;
}

【入门】纯粹合数

时间限制: 1.000 Sec 内存限制: 16 MB
提交: 7850 解决: 3770
[命题人:][下载数据: ?]
题目描述
一个合数,去掉最低位,剩下的数仍是合数,再去掉剩下的数的最低位,余留下来的数还是合数,这样反复,一直到最后剩下的一位数仍是合数;我们把这样的数称为纯粹合数。求所有的三位纯粹合数。
输入

输出
若干个3位数 每行一个(从小到大)
提示
注意:1既不是合数也不是质数!

#include<bits/stdc++.h>
using namespace std;
int hs(int x){
	if(x<2)return 0;
	for(int i=2;i<=sqrt(x);i++){
		if(x%i==0)return 1;
	}
	return 0;
}
int main()
{
	
	for(int i=100;i<=999;i++){
		if(hs(i)&&hs(i/10)&&hs(i/100))cout<<i<<endl;	
	}
	return 0;
}

欢迎使用Markdown编辑器

你好
! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

2014-01-07 2014-01-09 2014-01-11 2014-01-13 2014-01-15 2014-01-17 2014-01-19 2014-01-21 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.3.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沃被蓝倒啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值