目录
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)https://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 ????
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