2015-11-21
规律题,模拟n几次就可破
1 #include <stdio.h>////题意没有看清,n=3是1 0 1 2 #include <stdlib.h> 3 int main() 4 { 5 int act[35],n,q,i,j,k,a[35],m; 6 while(scanf("%d%d",&n,&q)!=EOF) 7 { 8 for(i=1;i<=q;i++) 9 scanf("%d",&act[i]); 10 if(n<3) 11 { 12 for(i=0;i<q;i++) 13 printf("0 "); 14 printf("\n"); 15 continue; 16 } 17 18 else 19 { 20 21 m=n-3; 22 if(n==3) 23 { 24 a[1]=1;a[2]=0;a[3]=1; 25 } 26 else 27 {if(n%2==0) 28 { 29 for(i=1;i<=n/2;i++) 30 a[i]=m+1-i; 31 for(j=i-1,k=i;j>=1;j--,k++) 32 a[k]=a[j]; 33 } 34 35 else 36 { 37 for(i=1;i<=n/2+1;i++) 38 a[i]=m+1-i; 39 for(j=i-2,k=i;j>=1;j--,k++) 40 a[k]=a[j]; 41 } 42 } 43 } 44 for(i=1;i<=q;i++) 45 printf("%d ",a[act[i]]); 46 printf("\n"); 47 48 } 49 return 0; 50 }
9503 懒人选座位时间限制:500MS 内存限制:65535K 题型: 编程题 语言: G++;GCC
Description在ACM混了一年之后,我终于有机会在新生赛出题了。然后我瞬间出了一道题。 (好吧,我承认,我只是翻译了原题而已╮(╯▽╰)╭) 输入格式有若干组数据,以EOF判定结束。 每组数据第一行有两个整形n(1~ 30)和q(1~30)。分别表示座位数和查询次数。接下来一行有q个整型。k1,k2……kq,分别表示我选择坐第k个座位。数据以空格分隔。 输出格式每组数据一行,对于每次查询,输出一个结果,以空格分隔。
输入样例4 4 1 2 3 4 5 5 1 2 3 4 5
输出样例1 0 0 1 2 1 0 1 2
提示 四个座位的时候,我选定座位①后,若第二个人选了③or④,当第三个人选②,我就要让位一次,这个是最坏的情况。
EOF结束即是数据读入以文件结束符结束。即输入输出类似如下(当然变量名啥的不必一样,VC下按ctrl+z 然后
回车可结束程序):
while(scanf("%d%d",&n,&q)!=EOF)
{
for(i=1;i<=q;i++)
scanf("%d",&act[i]);
……
……
printf("%d\n",answer);
}
来源sleepiforest
作者a470086609 |
原文:http://www.cnblogs.com/kevensusu/p/4992627.html