20211202

目录

P1423 小玉在游泳

P5724 【深基4.习5】求极差 / 最大跨度值

P1420 最长连号

P1075 [NOIP2012 普及组] 质因数分解

P5725 【深基4.习8】求三角形

 P5726 【深基4.习9】打分

P4956 [COCI2017-2018#6] Davor


P1423 小玉在游泳

小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%。现在小玉想知道,如果要游到距离x米的地方,她需要游多少步呢。请你编程解决这个问题。

#include<iostream>
using namespace std;
int main() {
	double n,s=2,k=1;
	cin >> n;
	for (double i = 2; s < n; ) {
		k++;
		i *= 0.98;
		s += i;
	}
	cout << k << endl;
	return 0;
}

olol  ???循环界限 

olol 循环改进 想 数列求和等公式

P5724 【深基4.习5】求极差 / 最大跨度值

 给出 n(n≤100) 和 nn 个整数 aiai​(0≤ai​≤1000),求这 n 个整数中的极差是什么。极差的意思是一组数中的最大值减去最小值的差。

#include<iostream>

using namespace std;

int main() {
	int  n,a,i=1, max=0, min=1000;
	cin >> n;
	do
	{
		cin >> a;
		if (max < a)
			max = a;
		if (min > a)
			min=a;
		i++;
	} while (i<=n);
	cout << max-min<<endl;
	return 0;
}

P1420 最长连号

输入长度为 nn 的一个正整数序列,要求输出序列中最长连号的长度。

连号指在序列中,从小到大的连续自然数。

#include<iostream>

using namespace std;

int main() {
	int n,a,b=0,z=1,max=0;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> a;
		if (a - b == 1) {
			z++;
			if (i == 1 && a == 1)
				z--;
			if (z > max)
				max = z;
		}
		else
			z = 1;
		b = a;
	}
	cout << max << endl;
	return 0;
}

改进:????

题解 P1420 【最长连号】 - 天照之焱 的博客 - 洛谷博客 (luogu.com.cn)icon-default.png?t=LA92https://www.luogu.com.cn/blog/hyy6660521/qwyga-p1420olol

 int main()主函数上定义,默认初始值为0

P1075 [NOIP2012 普及组] 质因数分解

已知正整数nn是两个不同的质数的乘积,试求出两者中较大的那个质数。????

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

超时。。。

olol 

???求质数

olol   ????

题解 P1075 【质因数分解】 - Stephen_Curry的博客 - 洛谷博客 (luogu.com.cn)icon-default.png?t=LA92https://www.luogu.com.cn/blog/123StephenCurry/solution-p1075

P5725 【深基4.习8】求三角形

4

01020304
05060708
09101112
13141516

      01
    0203
  040506
07080910
#include<iostream>
using namespace std;
int main() {
	int n,x=0;
	cin >> n;
	for (int i = 1; i <= n*n; i++) {
		printf("%.2d", i);
		if (i%n == 0)
			cout << endl;
	}
	cout << endl;
	for (int g = 1; g <= n; g++) {
		for (int k = 1; k <= n; k++) {
			if (k >n-g) {
				x++;
				printf("%.2d", x);
			}
			else
				cout << "  ";
		}
		if(g!=n)
		cout << endl;
	}
	return 0;
}

olol

作图

1.小心换行

2.找规律

3.行循环,列循环

其他思路:  ???

#include <cstdio>
using namespace std;

int main() {
  int n; 
  scanf("%d", &n);
  for(int i = 1; i <= n * n; i ++) {
    if(i < 10) { printf("0%d", i); }
    else { printf("%d", i); }
    if(i % n == 0) { printf("\n"); }
  } printf("\n");
  int cnt = 1;
  for(int i = 1; i <= n; i ++) {
    for(int j = 1; j <= n - i; j ++) { printf("  "); }
    while(cnt <= i * (i + 1) / 2) {
     if(cnt < 10) { printf("0%d", cnt); }
      else { printf("%d", cnt); }
      cnt ++;
    }
    printf("\n");
  }
}

 P5726 【深基4.习9】打分

现在有(n≤1000) 位评委给选手打分,分值从 0 到 10。需要去掉一个最高分,去掉一个最低分(如果有多个最高或者最低分,也只需要去掉一个),剩下的评分的平均数就是这位选手的得分。现在输入评委人数和他们的打分,请输出选手的最后得分,精确到 2 位小数。

#include<iostream>
#include<iomanip>
using namespace std;
int main() {
	int n,a,max=0,min=11;
	double sum=0, aver;
	cin >> n;
	for (int i = 1; i <= n;i++) {
		cin >> a;
		if (min > a)
			min = a;
		if (max < a)
			max = a;
		sum += a;
	}
	aver = (sum - max - min) / (n-2);
	cout << fixed<<setprecision(2) << aver << endl;
	return 0;
}

olol 

???函数 max min 

olol

???保留小数

P4956 [COCI2017-2018#6] Davor

在征服南极之后,Davor 开始了一项新的挑战。下一步是在西伯利亚、格林兰、挪威的北极圈远征。他将在 2018 年 12 月 31 日开始出发,在这之前需要一共筹集 n 元钱。他打算在每个星期一筹集 x 元,星期二筹集 x+k 元,……,星期日筹集 x+6k 元,并在 52 个星期内筹集完。其中 x,k 为正整数,并且满足1≤x≤100。

现在请你帮忙计算 x,k 为多少时,能刚好筹集 n 元。

如果有多个答案,输出 x 尽可能大,k 尽可能小的。注意kk 必须大于0。

#include<iostream>
#include<cmath>
using namespace std;
int main() {
	int  x, k;
	double n;
	cin >> n;
	n = ceil(n / 52);
	for (k = 1; ; k++) {
		x = (n - 21 * k) / 7;
		if (x > 100)
			continue;					//注意 题中变量 范围
		if (n == 7 * x + 21 * k) {
			cout << x << endl << k << endl;
			return 0;
		}
	}
}

olol  注意 题中变量 范围

olol ????函数ceil floor

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值