一道经典的C++竞赛题
来源:互联网 发布:java实现实时监控系统 编辑:程序博客网 时间:2024/06/04 20:01
原文地址:一道经典的C++竞赛题作者:xianfa110
已知n个整数 x1,x2,…..xn, 以及一个整数k (k<n)。从 n个整数中任选k个整数组合相加,可分别得到一系列的和。例如当 n=4, k=3,4个整数分别为3,7,12,19时,可得全部的组合为:
3+7+12=22 3+7+19=29
7+12+19=383+12+19=34。
现在,要求你计算出和为素数的组合数有多少种。例如上例,只有一种组合的和为素数:(3+7+19=29)。
输入:
n, k(1≤n≤20,k<n)
x1,x2,…xn(1≤xi≤5000000)
输出:
一个整数(满足条件的种数)
输入输出样例:
输入:
4 3
7 12 19
输出:
1
源程序:
#include<iostream>
#include<math.h>
const int N=21;
using namespace std;
int issushu(long num)
{
for(longi=2;i<=sqrt(num);i++)
if(num%i==0)
return 0;
return1;
}
long totalsum(long a[],int n)
{
long sum=0;
for(inti=0;i<n;i++)
sum+=a[i];
return sum;
}
int main()
{
cout<<endl<<"pleaseinput the number(0~20) of the numlist and the choosenumbers:";
int num=0,k=0;
cin>>num>>k;
cout<<"please input"<<num<<"listnum:";
long num1[N],num2[N];
for(inti=0;i<num;i++)
cin>>num1[i];
long num3=0,count=0;
for(intj=0;j<k;j++)
num2[j]=num1[j];
num3=totalsum(num2,k);
if(issushu(num3))
count++;
int m=0;
long data=0;
for(intn=0;n<k;n++)
{
data=num2[n];
for(m=k;m<num;m++)
{
num2[n]=num1[m];
num3=totalsum(num2,k);
if(issushu(num3))
count++;
}
num2[n]=data;
}
cout<<endl<<"thekinds numberis:"<<count<<endl;
return 0;
}
输入:
n, k(1≤n≤20,k<n)
输出:
一个整数(满足条件的种数)
输入输出样例:
输入:
4 3
7 12 19
输出:
源程序:
#include<iostream>
#include<math.h>
long totalsum(long a[],int n)
{
}
int main()
{
}
0 0
- 一道经典的C++竞赛题
- 一道 Google 竞赛题的解法
- 一道 Google 竞赛题的解法
- 一道简单的itat竞赛题
- 一道竞赛题
- 一道竞赛题
- 一道初等平面几何竞赛题的暴力解法
- 又一道竞赛题
- 一道程序竞赛题
- 一道C#竞赛题
- 关于一道竞赛题
- [转贴] 一道Google中国挑战赛竞赛题的解法
- 经典的一道题目.
- 一道经典的笔试题
- 一道经典的面试题
- 一道表达式的经典试题
- 一道表达式的经典试题
- hdu1016(一道经典的dfs)
- 飞思卡尔MC9S12XS128 SCI串口相关…
- 单片机中无符号数运算出现的问题
- DS18B20
- 直流偏置电压的定义是什么?
- 找工作时总结的一些C/C++知…
- 一道经典的C++竞赛题
- C语言中.h和.c文件解析(很精彩)
- 飞思卡尔智能车摄像头上位机…
- 串口
- 摄像头
- 关于typedef的用法总结
- SorceTree 与 Bitbucket连接
- typedef用法总结之续
- 两种加载BMP纹理图像的方法