循环!循环!循环!
作者:互联网
目录
循环!循环!循环!
洛谷新手村 “循环!循环!循环!” 的题目算比较简单。
P1008 三连击
此题只要 a,2a 和 3a 的每位上的数都在 1∼9 中,并且没有重复的数值即可。
#include<iostream>
#include<cstring>
using namespace std;
int num[10] = { 0 };
bool fun(int a) {
int b,i=3;
while (i--) {
b = a % 10;
a /= 10;
if (b == 0||num[b] == 1) {
return false;
}
num[b] = 1;
}
return true;
}
int main() {
for (int i = 100; i <= 333; i++) {
memset(num, 0, sizeof(num));
if (fun(i) && fun(2 * i) && fun(3 * i)){
cout << i << " " << 2 * i << " " << 3 * i << endl;
}
}
return 0;
}
P1035 级数求和
此题需要注意级数求和的结果不能用float,一定要用 double。float的精度不够。
include<iostream>
using namespace std;
int main() {
int K,n=0;
double S = 0.0; // 这里一定要用 double ,float 精度不够
cin >> K;
while (S <= K) {
S += 1.0 / (++n);
}
cout << n << endl;
return 0;
}
P1423 小玉在游泳
这道题即计算最小的 t 使得如下式子成立:
2+2×(0.98)+2×(0.98)2+2×(0.98)t≥n
根据等比数列求和可得
1−0.982(1−0.98t+1)≥n
整理可得
ln0.98ln(1−0.01n)≤t
而 t 是整数 所以便有
t=⌈ln0.98ln(1−0.01n)⌉
⌈x⌉ 为取不小于 x 的最小整数。
#include<iostream>
#include <math.h>
using namespace std;
int main() {
double n;
cin >> n;
cout<< ceil(log(1-0.01*n)/log(0.98))<<endl;
return 0;
}
P1424 小鱼的航程(改进版)
#include<iostream>
using namespace std;
int main() {
int num[7] = { 250,250,250,250,250,0,0 };
int x, n,ans;
cin >> x >> n;
int p = x - 1;
int times = (n + x - 1) / 7;
int q = n + x - 1 - times * 7;
ans = times * 5 * 250;
for (int i = 0; i < p; i++) {
ans -= num[i];
}
for (int i = 0; i < q; i++) {
ans += num[i];
}
cout << ans << endl;
return 0;
}
P1980 计数问题
我决定单独写篇文章来讲解计数问题。
标签:num,int,ln,循环,0.98,include 来源: https://blog.csdn.net/qq_31019183/article/details/101150712