C语言抽奖问题

Python022

C语言抽奖问题,第1张

包裹时间头

#include<iostream>

#include<time.h>

using namespace std

......

.....

cin>>x//X假设为你所要抽选的号码

srand(time(0))//初始化随机种子

i=rand()%100+10 //%100是代表随机上限为100,+10代表下线为10

cout。。。

//你中奖了,或者没中奖

/*************************************

* Author : wacs5

* Email : [email protected]

* Function : 36选7

*************************************/

#include <dos.h>

#include <time.h>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <Graphics.h>

#define N 36 /*36选7*/

#define M 7/*36选7*/

#define TRY_N 10 /*10次实验*/

int main(void)

{

int data[TRY_N][M] /*保存数据数组*/

int try_i,i,j

int sameflag,temp

int gdriver=DETECT,gmode,errorcode

char info[10]

int order[N]

FILE *fp

fp=fopen("randdata.txt","w")

if (fp==NULL)

{

printf("File Open Error:\nPress any key to exit:")

getch()

exit(-1)

}

initgraph(&gdriver,&gmode,"") /*初始化图形驱动*/

randomize() /*初始化随机数*/

for (i=0i<Ni++) /*将36个球放入数组*/

order[i]=i+1

for (i=0i<Ni++) /*36个球随机输出*/

{

j=rand()%(N-i)

temp=order[N-i-1]

order[N-i-1]=order[j]

order[j]=temp

}

for (i=0i<Ni++)

{

itoa(order[i],info,10)/*将数转成字符串*/

outtextxy((i%M)*40,(i/M)*20,info)/*图形界面输出*/

}

for (try_i=0try_i<TRY_Ntry_i++) /*第try_i次实验*/

{

for (i=0i<Mi++)/*第i个数*/

{

sameflag=1 /*因为选的数不能重复*/

while (sameflag==1) /*若重复,计算直至不重复为止*/

{

temp=rand()%N+1 /*产生1到36之间的随机数*/

for (j=0j<ij++) /*与已选的数对比,看是否重复*/

if (temp==data[try_i][j]) /*若重复,继续下一个取数*/

break

if (j==i)/*不重复,保存数据*/

{

data[try_i][i]=temp

sameflag=0

}

}

}

for (i=0i<Mi++) /*排序*/

for (j=i+1j<Mj++)

if (data[try_i][i]>data[try_i][j])

{

temp=data[try_i][i]

data[try_i][i]=data[try_i][j]

data[try_i][j]=temp

}

for (i=0i<Mi++)

{

itoa(data[try_i][i],info,10)/*将数转成字符串*/

outtextxy(i*40,(8+try_i)*20,info)/*图形界面输出*/

fprintf(fp,"%2d ",data[try_i][i])

}

fprintf(fp,"\n")

}

fclose(fp)

getch() /*等待一个按键*/

closegraph() /*关闭图形界面*/

return 0

}

幸运儿

Time Limit: 3000ms, Memory Limit: 10000KB                , Accepted: 0, Total Submissions: 0

 Description

游乐园准备抽奖选择一批幸运儿童(X个人)进行玩具奖励,想请你帮忙处理这件事。

 这次抽奖是将所有儿童排成一排,然后从一叠卡片的顶部取卡片,卡片号为N;从队列中由1到N进行报数,每次报到N时,第N个儿童离开队列,然后下一个儿童再从1开始报数。当报数报到队列结束的时候,再从一叠卡片的顶部取下一张卡片,再从剩余的队列中从第1人开始根据新的卡片号进行报数。最后,队列中的X个人获奖。

 然而,只有到了游戏前的一分钟才知道有多少儿童参加抽奖。请你编写程序,基于卡片和队列中儿童的数量,求出队列中哪些儿童可以获奖。可以确定最多用20张卡片。

 例如:队列中有10名儿童,2个幸运位置,卡片号码为3、5、4、3、2,队列位置中1和8的儿童可以获奖,过程如下:

 (1)队列1、2、3、4、5、6、7、8、9、10,N=10,X=2,卡片次序为3、5、4、3、2、…… 

(2)3:划掉3、6、9,剩下1、2、4、5、7、8、10;

 (3)5:划掉7,剩下1、2、4、5、8、10;

 (4)4:划掉5,剩下1、2、4、8、10;

 (5)3:划掉4,剩下1、2、8、10;

 (6)2:划掉2、10,剩下1、8;

Input

第1行先输入一个整数N(1≤N≤50)给出参加抽奖的儿童人数,再输入一个整数X(1≤X≤9)给出有多少个幸运位置。

 第2行输入20个整数给出前20张卡片上的号码,卡片号码为1~11的整数,用空格隔开。

Output

输出幸运位置列表,用空格隔开。

Sample Input 

 10 2

 3 5 4 3 2 9 6 10 10 6 2 6 7 3 4 7 4 5 3 2

Sample Output

 1 8