time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
You are given two integers x� and k�. Grasshopper starts in a point 00 on an OX axis. In one move, it can jump some integer distance, that is not divisible by k�, to the left or to the right.
What's the smallest number of moves it takes the grasshopper to reach point x�? What are these moves? If there are multiple answers, print any of them.
Input
The first line contains a single integer t� (1≤t≤10001≤�≤1000) — the number of testcases.
The only line of each testcase contains two integers x� and k� (1≤x≤1001≤�≤100; 2≤k≤1002≤�≤100) — the endpoint and the constraint on the jumps, respectively.
Output
For each testcase, in the first line, print a single integer n� — the smallest number of moves it takes the grasshopper to reach point x�.
In the second line, print n� integers, each of them not divisible by k�. A positive integer would mean jumping to the right, a negative integer would mean jumping to the left. The endpoint after the jumps should be exactly x�.
Each jump distance should be from −109−109 to 109109. In can be shown that, for any solution with the smallest number of jumps, there exists a solution with the same number of jumps such that each jump is from −109−109 to 109109.
It can be shown that the answer always exists under the given constraints. If there are multiple answers, print any of them.
Example
input
Copy
3
10 2
10 3
3 4
output
Copy
2 7 3 1 10 1 3
解题说明:此题是一道模拟题,根据题目意思直接判断
如果k大于x,那么就可以一次走完,输出1
如果k小于x,如果k不能被x整除,那么输出1,如果k可以被x整除,那么输出两个数,分别是1,x-1.
- #include
- int main()
- {
- int t;
- scanf("%d", &t);
- while (t--)
- {
- int x, k;
- scanf("%d %d", &x, &k);
- if (x % k != 0)
- {
- printf("1\n%d\n", x);
- }
- else
- {
- printf("2\n1 %d\n", x - 1);
- }
- }
- return 0;
- }