1002: 级数求和
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 51 Solved: 36
[ Submit][ Status][ Web Board][ Edit] [ TestData]
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 "stdio.h"
#include "stdlib.h"
#include "math.h"
#define max 10
int total[1000];//组合的所有
int indexALL=0;
long long sushu[100008];
int sushu_index=2;
void sushubiao(){
int flag;
sushu[0]=2;
sushu[1]=3;
//素数打表
for(int i=5;i<max;i=i+2){
flag=1;
for(int j=2;j<=sqrt(i);j++){
if(i%j==0){
flag=0;
break;
}
}
if(flag==1){
// printf("//zheli2///\n");
sushu[sushu_index]=i;
sushu_index++;
}
}
}
void ALLsort(int num[],int temp[],int start,int end,int index,int k){
if(index==k){
for(int i=0;i<k;i++){
total[indexALL]+=temp[i];
}
indexALL++;
return;
}
//if(start+(k-index)>end)return;//表示不够组合那么多个
temp[index]=num[start];
ALLsort(num,temp,start+1,end,index+1,k);//即这个组合选择了这个数
ALLsort(num,temp,start+1,end,index,k);
}
int issushu(int n){
for(int i=0;i<sushu_index;i++){
if(n==sushu[i]){
return 1;
}
}
return 0;
}
int main(){
// printf("//zheli///\n");
freopen("/Users/qigelaodadehongxiaodi/Desktop/data1.txt", "r", stdin);
//这个不理,是用来方便输入输出的东西,利用文本输入流来读取数据
//提交代码的时候记得注销这条语句
int n,k;
int num[1000];
int temp[1000];
scanf("%d %d",&n,&k);
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
}
// printf("//zheli///\n");
sushubiao();//素数打表
// printf("//zheli///\n");
ALLsort(num,temp,0,n-1,0,k);//打表,得到全排列,在数组total中,下表为indexALL
int cnt=0;
for(int i=0;i<indexALL;i++){
printf("%d\n",total[i]);
// cnt+=issushu(total[i]);
}
printf("%d\n",n);
return 0;
}