由于校赛,OJ将于本周五(5.17)到周日停止服务

Problem 1758. -- 扑克牌

1758: 扑克牌

Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lld
Submitted: 280  Accepted: 142
[Submit][Status][Web Board]

Description

有n张朴克牌(编号依次为1到n),使它们全部正面朝上。
从第2张牌开始,把凡是2的倍数位置上的牌翻成正面朝下;
接着从第3张牌开始,把凡是3的倍数位置上的牌正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;
接着从第4张牌开始,把凡是4的倍数位置上的牌按此规律依此类推。
当第1张要翻的牌是第m张,翻完m的倍数的牌后,统计最后有几张牌正面朝上,并打印出它们的位置。
例如:n=10,m=2,则剩下1,3,5,7,9共5张牌正面朝上
      n=10,m=4,则剩下1,4,5,6,7,8共6张牌正面朝上

注意:main函数已经给定(如下所示)。

           请将程序补充完整。

           提交时只需要提交自己补充的代码部分,不需要提交给定的main函数的代码部分。

#include<stdio.h>
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        poker(n,m);
    }
    return 0;
}

Input

包含多组测试数据,每组测试数据第一行包含2个正整数n(小于1000)和m,分别表示扑克牌的张数和最后一次开始翻牌的位置。

Output

每组测试数据输出占两行,第一行为最后牌正面朝上的张数,第二行分别输出正面朝上的扑克牌的位置。数据之间用空格隔开。

Sample Input

10 2
10 4

Sample Output

5
1 3 5 7 9
6
1 4 5 6 7 8

[Submit][Status][Web Board]