1002: 级数求和

1002: 级数求和

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 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;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值