P5718 【深基4.例2】找最小值

题目描述

给出 n 和 n 个整数 ai​,求这 n 个整数中最小值是什么。

输入格式

第一行输入一个正整数 n,表示数字个数。

第二行输入 n 个非负整数,表示 a1​,a2​…an​,以空格隔开。

输出格式

输出一个非负整数,表示这 n 个非负整数中的最小值。

输入输出样例

输入 #1复制

5
5 7 4 2 6

输出 #1复制

2

说明/提示

数据保证,n≤100 且 0≤ai​≤1000。

实现代码:

#include<bits/stdc++.h>
using namespace std;

void solve(){
	int a[110];
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	sort(a,a+n);
	cout<<a[0];
}

int main(){
	int T=1;
	while(T--){
		solve();
	}
	return 0;
}

P5719 【深基4.例3】分类平均

题目描述

给定 n 和 k,将从 1 到 n 之间的所有正整数可以分为两类:A 类数可以被 k 整除(也就是说是 k 的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 1 位,用空格隔开。

数据保证两类数的个数都不会是 0。

输入格式

输入两个正整数 n 与 k。

输出格式

输出一行,两个实数,分别表示 A 类数与 B 类数的平均数。精确到小数点后一位。

输入输出样例

输入 #1复制

100 16

输出 #1复制

56.0 50.1

说明/提示

数据保证,1≤n≤10000,1≤k≤100。

 实现代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,k;
	cin>>n>>k;
	double sum=0,cnt=0, SUM=0,CNT=0;
	for(int i=1;i<=n;i++){
		if(i%k==0){
			sum++;
			cnt+=i;
		}
		else SUM++,CNT+=i;
	}
	printf("%.1lf %.1lf",cnt/sum,CNT/SUM);
	return 0;
}

P5720 【深基4.例4】一尺之棰

题目描述

《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a 的木棍,从第二天开始,每天都要将这根木棍锯掉一半(每次除 2,向下取整)。第几天的时候木棍的长度会变为 1?

输入格式

输入一个正整数 a,表示木棍长度。

输出格式

输出一个正整数,表示要第几天的时候木棍长度会变为 1。

输入输出样例

输入 #1复制

100

输出 #1复制

7

说明/提示

数据保证,1≤a≤109。

 实现代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,sum=0;
	cin>>n;
	while(n!=1){
		n=n/2;
		sum++;
	}
	cout<<sum+1;
	return 0;
}

P5721 【深基4.例6】数字直角三角形

题目描述

给出 n,请输出一个直角边长度是 n 的数字直角三角形。所有数字都是 2 位组成的,如果没有 2 位则加上前导 0。

输入格式

输入一个正整数 n。

输出格式

输出如题目要求的数字直角三角形。

输入输出样例

输入 #1复制

5

输出 #1复制

0102030405
06070809
101112
1314
15

说明/提示

数据保证,1≤n≤13。

 实现代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	int cnt=0;
	for(int i=1;i<=n;i++){
		for(int j=i;j<=n;j++){
			cnt++;
			if(cnt<10){
				cout<<"0"<<cnt;
			}
			else cout<<cnt;
		}
		cout<<endl;
	}
	return 0;
}

P1009 [NOIP 1998 普及组] 阶乘之和

用高精度计算出 S=1!+2!+3!+⋯+n!(n≤50)。

其中 ! 表示阶乘,定义为 n!=n×(n−1)×(n−2)×⋯×1。例如,5!=5×4×3×2×1=120。

输入格式

一个正整数 n。

输出格式

一个正整数 S,表示计算结果。

输入输出样例

输入 #1复制

3

输出 #1复制

9

说明/提示

【数据范围】

对于 100% 的数据,1≤n≤50。

【其他说明】

注,《深入浅出基础篇》中使用本题作为例题,但是其数据范围只有 n≤20,使用书中的代码无法通过本题。

如果希望通过本题,请继续学习第八章高精度的知识。

NOIP1998 普及组 第二题

 实现代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=111;
int a[N]={0},s[N]={0};
int n;

void fun(int x){
	int t=0;
	for(int i=100;i>=1;i--){
		a[i]=a[i]*x+t;
		t=a[i]/10;
		a[i]=a[i]%10;
	}
}
void f(){
	int t=0;
	for(int i=100;i>=1;i--){
		s[i]+=a[i]+t;
		t=s[i]/10;
		s[i]=s[i]%10;
	}
}

signed main(){
	cin>>n;
	a[100]=1;
	for(int i=1;i<=n;i++){
		fun(i);
		f();
	}
	for(int i=1;i<=100;i++){
		if(s[i]){
			for(int j=i;j<=100;j++){
				cout<<s[j];
			}
			return 0;
		}
	}
	return 0;
}

P1980 [NOIP 2013 普及组] 计数问题

题目背景

NOIP2013 普及组 T1

题目描述

试计算在区间 1 到 n 的所有整数中,数字 x(0≤x≤9)共出现了多少次?例如,在 1 到 11 中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 次。

输入格式

2 个整数 n,x,之间用一个空格隔开。

输出格式

1 个整数,表示 x 出现的次数。

输入输出样例

输入 #1复制

11 1

输出 #1复制

4

说明/提示

对于 100% 的数据,1≤n≤106,0≤x≤9。

 实现代码:

#include<bits/stdc++.h>
using namespace std;

void solve(){
	int a[110];
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	sort(a,a+n);
	cout<<a[0];
}

int main(){
	int T=1;
	while(T--){
		solve();
	}
	return 0;
}

P1035 [NOIP 2002 普及组] 级数求和

题目描述

已知:Sn​=1+21​+31​+…+n1​。显然对于任意一个整数 k,当 n 足够大的时候,Sn​>k。

现给出一个整数 k,要求计算出一个最小的 n,使得 Sn​>k。

输入格式

一个正整数 k。

输出格式

一个正整数 n。

输入输出样例

输入 #1复制

1

输出 #1复制

2

说明/提示

【数据范围】

对于 100% 的数据,1≤k≤15。

【题目来源】

NOIP 2002 普及组第一题

 实现代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	double sum=0;
	for(int i=1;;i++){
		sum+=1.0/i;
		if(sum>n){
			cout<<i;
			return 0;
		}
	}
	return 0;
}
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐