奇怪的比赛 (2012 结果填空 )
某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:
每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。
每位选手都有一个起步的分数为10分。
某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?
如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。
你的任务是算出所有可能情况。每个答案占一行。*/
#include"stdio.h"
#include"string.h"
int main()
{
int a[11];
int i;
for ( i=0 ;i<10;i++)
{ a[i]=0;
}
for (a[0]=0;a[0]<2;a[0]++)
{
for (a[1]=0;a[1]<2;a[1]++)
{
for (a[2]=0;a[2]<2;a[2]++)
{
for (a[3]=0;a[3]<2;a[3]++)
{
for (a[4]=0;a[4]<2;a[4]++)
{
for (a[5]=0;a[5]<2;a[5]++)
{
for (a[6]=0;a[6]<2;a[6]++)
{
for (a[7]=0;a[7]<2;a[7]++)
{
{
for (a[8]=0;a[8]<2;a[8]++)
{
for (a[9]=0;a[9]<2;a[9]++)
{
int sum =10 ;
for (i=0;i<10;i++)
{
if(a[i]==1)
{
sum= 2 *sum;
}
if(a[i]==0)
{
sum=sum-i-1;
}
}
if (sum==100)
{
for (i=0;i<10;i++)
{
printf("%d",a[i]);
}
printf("\n");
}
}
}
}
}
}
}
}
}
}
}
}
return 0 ;
}
#include"stdio.h"
#include"string.h"
int a[11];
void f(int score,int n)
{
if(score==100&&n==11) // 递归结束条件
{
for(int i=1;i<=10;i++)
printf("%d",a[i]);
printf("\n");
return;
}
if(n>11)
return;
a[n]=1;
f(score*2,n+1); //描述递归关系吧当前调用 与下一次调用的关系
a[n]=0;
f(score-n,n+1);
}
int main()
{
int i;
for ( i=0 ;i<10;i++)
{ a[i]=0;
}
f(10,1) ;
return 0 ;
}
结果
/*
2.标题:等差素数列
2,3,5,7,11,13,....是素数序列。
类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。
2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
这是数论领域一项惊人的成果!
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:
长度为10的等差素数列,其公差最小值是多少?
注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。
------------------------------*/
#include "stdio.h"
long long int b[1000010];
long long int a[1000010];
long long int suhushai(long long int n)
{
b[0]=0;
b[1]=0;
b[2]=1;
long long int i;
long long int j;
for (i=3;i<=n;i++)
{
b[i]= 1;
}
for (i=2;i<=n;i++)
{
if(b[i]==0)
{
continue;
}
for (j = 2;j*i<=n;j++)
{
b[j*i]=0;
}
}
j=0;
for (i=1;i<n;i++)
{
if (b[i]==1)
a[j++] =i;
}
return j;
}
int main()
{
long long int tol;
tol=suhushai(1000000);
long long int d=1;
long long int i;
int k;
int flag=1 ;
for (d=1;d <1000000&&flag==1;d++)
{
for (i=0;i<tol;i++)
{
for (k=0;b[ a[i]+k*d ]==1;)
{
k++;
}
if ( k>=9 )
{
printf("%lld \n",d);
flag=0;
break;
}
}
}
return 0;
}