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

【题目链接:级数求和】

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
【思路】

  直接模拟

 1 #include <iostream>  

 2 using namespace std;  

 3 int main()  

 4 {      

 5       int m; 

 6       cin >> m;      

 7       while(m--){

 8           int k, n = 1;  

 9         double sum = 0;  

10           cin >> k; 

11           while(1)  {  

12             sum += double(1/double(n));  

13                if(sum > k) break;  

14             n++;  

15            }  

16             cout << n << endl;  

17       }    

18     return 0;  

19 } 

【题目链接:进制转换】

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。

 1 #include<iostream>

 2 #include<cstring>

 3 #include<cmath>

 4 using namespace std;

 5 int main(){

 6     int n;

 7     cin >> n;

 8     while(n--){

 9         long long sum = 0,ac = 0;

10         int i,j;

11         char a[102];

12         cin >> a;

13         int temp = strlen(a);

14         for(i = 0,j = temp - 1;i < temp;i++,j--){

15             ac = pow(2,i);

16             if(a[j] == '1'){

17                 sum += ac;

18             }            

19         }

20         cout << sum << endl;

21     }

22     return 0;

23 } 

 

【candy】

  博客链接:树状数组

你可能感兴趣的:(进制转换)