Problem A: 级数求和
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 409 Solved: 240
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
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 }
时间: 2024-10-13 15:02:50