POJ 2051

http://poj.org/problem?id=2051

这个题目的大题意思就是给你一些ID,和ID所对应的周期,每隔它所对应的周期,它的任务就会执行,就会输出所对应的ID

Register 2004 200
Register 2005 300

时间为100时,不输出

时间为200时,输出2004

时间为300时,输出2005

时间为400时,输出2004

时间为500时,不输出

时间为600时,两个周期都满足,则按照ID又小到大的顺序进行输出

 #include <stdio.h>
#include <stdlib.h> struct IN{                    //定义一个结构体存放ID和时间
int id;
int time;
}s[]; int cmp(const void *a,const void *b) //对结构体按照ID进行排序
{
return (*(IN *)a).id-(*(IN *)b).id;
} int main()
{
char str[];
scanf("%s",str);
int i=,boss,time,j,k;
while(str[]!='#')      
{
scanf("%d%d",&s[i].id,&s[i].time);
i++;
scanf("%s",str);
}
scanf("%d",&boss);      //boss就是那个最后一个数字,意思是输出几组数据结束;
qsort(s,i,sizeof(s[]),cmp);      //对结构进行排序,当碰到周期相同时,按顺序输出即可
for(j=,k=,time=;j<boss;time++)      //j就是输出的次数
{
for(;k<i;k++)
{
if(time%s[k].time==)
{
printf("%d\n",s[k].id);    //没输出一次j+1
j++;
}
}
k=;  
}
return ;
}
上一篇:Docker & ASP.NET Core (2):定制Docker镜像


下一篇:javascript创建节点的事件绑定