The ones to remain |
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB |
Total submit users: 68, Accepted users: 56 |
Problem 11135 : No special judgement |
Problem description |
There are N soldiers standing in one line. They are marked from 1 to N, from right to left. And they are given a number m. Then the soldiers numbered off, straight from the right-hand man. The one who reported a number that is the multiple of m was kept in the line. Others have to leave the line. They continue doing this till the number of people in the line is less than m. For example, if there are 10 soldiers, and m = 3. For the first time the soldiers who are marked 3, 6, 9 remain in the line. For the second time the soldier who is marked 9 remains in the line. Because the number of soldiers in the line is less than m, so the soldier marked 9 was the only one to remain in the line. Now we want to know who will be the ones to remain, can you tell us ? |
Input |
There are several test cases in the input. Each test cases is only one line, contains two integers n and m.(3 <= n <= 109, 2 <= m <= n). The input ends when n = 0 and m = 0. |
Output |
For each test case, output two lines. The first line contains one integer x, the number of soldiers to remain. The second line contains x integers, the numbers marked on the soldiers who remain in the line. You should output them in increasing order. |
Sample Input |
10 3 8 3 0 0 |
Sample Output |
1 9 2 3 6 |
Problem Source |
YiYi |
CODE
/*
Name: 11135_The ones to remain
Copyright: yangchun's
Author: yangchun
Date: 26-05-08 23:27
Description: HUNAN UNIVERSITY ACM/ICPC Judge Online_Problem 11135_The ones to remain
*/
#include <algorithm>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int m,n,x;
while(scanf("%d%d",&m,&n),m!=0 && n!=0)
{
int temp = m,flag = 0;
while(n <= temp)
{
temp = temp/n;
flag++;
}
printf("%d/n",temp);
double first_num = pow(n,flag);
for(double i=1; i<temp; i++)
printf("%.f ",first_num*i);
printf("%.f/n",first_num*temp);
}
}