【轻院热身赛】级数求和、进制转换、candy

时间:2021-11-25 16:48:09

【题目链接:级数求和】

Problem A: 级数求和

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 409  Solved: 240

SubmitStatusWeb Board

Description

已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。

Input

键盘输入 k

Output

屏幕输出 n

Sample Input

1

Sample Output

2
【思路】

  直接模拟

 #include <iostream>
using namespace std;
int main()
{
int m;
cin >> m;
while(m--){
int k, n = ;
double sum = ;
cin >> k;
while() {
sum += double(/double(n));
if(sum > k) break;
n++;
}
cout << n << endl;
}
return ;
}

【题目链接:进制转换】

Problem B: 进制转换

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 321  Solved: 78

SubmitStatusWeb Board

Description

将一个二进制数转换为十进制数输出。

Input

首先输入一个整数n,表示测试实例的个数。接下来是n行,每行一个01串(长度不超过60),表示一个二进制数。

Output

输出n行。对应每一行输入,输出其对应的十进制数整数。

Sample Input

2
1101
1100111

Sample Output

13
103
【思路】

  注意定义 long long 类型,赋值输出为 %lld,最大可读入18位整数,需用Dev,Dev下载地址

  若在VC 6.0中,则用__int64,赋值输出为%I64d。

 #include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int main(){
int n;
cin >> n;
while(n--){
long long sum = ,ac = ;
int i,j;
char a[];
cin >> a;
int temp = strlen(a);
for(i = ,j = temp - ;i < temp;i++,j--){
ac = pow(,i);
if(a[j] == ''){
sum += ac;
}
}
cout << sum << endl;
}
return ;
}

 

【candy】

  博客链接:树状数组