低碳生活大獎賽
題目:某電視臺舉辦了低碳生活大獎賽。題目的計分規則相當奇怪:
(1)每位選手需要回答10個問題(其編號為1到10),越后面越有難度。答對的,當前分數翻倍;答錯了則扣掉與題號相同的分數(選手必須回答問題,不回答按錯誤處理)。
(2)每位選手都有一個起步的分數為10分。 某獲勝選手最終得分剛好是100分,如果不讓你看比賽過程,你能推斷出他(她)哪個題目答對了,哪個題目答錯了嗎?
(3)如果把答對的記為1,答錯的記為0,則10個題目的回答情況可以用僅含有1和0的串來表示。例如:0010110011 就是可能的情況。
(4) 你的任務是算出所有可能情況。每個答案占一行。
//低碳生活大獎賽
#include<stdio.h>
#include<math.h>
int main(){
int a[10]={0};
int i,j,num,score;
for(i=0;i<pow(2,10);i++){
for(j=0;j<10;j++){ //每次把數組都初始化為0
a[j]=0;
}
score=100;
num=i;
for(j=9;j>=0;j--){ //把十進制的整數變為二進制的0、1代碼,放入數組中
a[j]=num%2;
if(a[j]==1){ //從100分,反向回推
score/=2;
}
if(a[j]==0){
score+=j+1;
}
num/=2;
}
if(score==10){ //如果回推結束后,score正好為10,那么這種情況符合條件
for(j=0;j<10;j++){ //把這種情況打印出來
printf("%d",a[j]);
}
printf("\n");
}
}
return 0;
}
1組成的整數可以被2011整除
#include<Stdio.h>
int main()
{
int i,temp;
i=5;
p=11111;
while(p!=0){
p=p*10+1;
p=p%2011;
i=i+1;
}
printf("%d\n",i);
return 0;
}