E - Two Bags of Potatoes
Valera had two bags of potatoes, the first of these bags contains x (x ≥ 1) potatoes, and the second — y (y ≥ 1) potatoes. Valera — very scattered boy, so the first bag of potatoes (it contains x potatoes) Valera lost. Valera remembers that the total amount of potatoes (x + y) in the two bags, firstly, was not gerater than n, and, secondly, was divisible by k.
Help Valera to determine how many potatoes could be in the first bag. Print all such possible numbers in ascending order.
Input
The first line of input contains three integers y, k, n (1 ≤ y, k, n ≤ 109; ≤ 105).
Output
Print the list of whitespace-separated integers — all possible values of x in ascending order. You should print each possible value of x exactly once.
If there are no such values of x print a single integer -1.
Examples
Input
10 1 10
Output
-1
Input
10 6 40
Output
2 8 1 4 20 26
题意很简单,就是注意n的范围,去模拟的时候注意方法,否则就会时间超限。
方法1:
#include"iostream"
#include"cstdio"
#include"algorithm"
#include"cstring"
using namespace std;
int main()
{
int m,k,n;
while(~scanf("%d %d %d",&m,&k,&n))
{
for(int i=(m/k+1)*k;i<=n;i+=k)
{
cout<<i-m<<" ";
}
if((m/k+1)*k>n)
{
cout<<-1;
}
cout<<endl;
}
return 0;
}
方法2:
#include"iostream"
#include"algorithm"
#include"cstring"
using namespace std;
int main()
{
int y;
int k,n;
while(cin >> y >> k >>n)
{
int flag = 0;
for(int i = 1;i <= 100000;i ++)
{
int x=i*k;
if(x > y && x<= n)
{
cout<<x-y<<" ";
flag=1;
}
if(x > n)
{
break;
}
}
if(y == n || flag == 0)
{
cout<<-1;
}
cout<<endl;
}
return 0;
}