题目描述
每次电工实验前,班长都要从老师那里领取实验元件,然后分发给大家。这次实验,班长领取了两袋74161,第一袋有x(x ≥ 1)个,第二袋有y (y ≥ 1)。但很不幸,班长把第一个袋子弄丢了。现在,他只记得第二袋的数量y,以及x+y不超过n并且可以被k整除。管器材的老师告诉
班长除非他能找到第一袋所有可能的元件数,否则按最大数量赔偿——那将是一个天文数字以至于班长需要卖肾。
于是班长找到你,想请你帮忙找出第一袋中所有可能的元件数量并按升序输出。
输入
多组数据,每组数据一行,依次为三个整数y,k,n (1 ≤ y, k, n ≤ 1e9; n/k≤ 1e5)。
输出
针对每组数据输出一行以空格分开的整数,表示所有可能的x值,并且要求x值以升序排列。每个可能的x值仅需输出一次。如果没有合法的x值,输出-1。
样例输入
10 1 10 10 6 40
样例输出
-1 2 8 14 20 26
#include <iostream>
using namespace std;
#define MAX 1e9+3
int main()
{
int y,k,n;
while (cin>>y>>k>>n)
{
if (y>=n||k>n)
{
cout<<-1<<endl;
continue;
}
int p=y/k; p++;
if (p*k>n)
{
cout<<-1<<endl;
continue;
}
int x=p*k-y,ma=n-y;
cout<<x; x+=k;
while (x<=ma)
{
cout<<" "<<x;
x+=k;
}
cout<<endl;
}
return 0;
}