傳送門
題解:
由於我校模擬考的時候 的限制爲 1e16,所以這裏講一種把 往小了放的方法。
首先問題轉化爲找到兩個前綴使得答案 相等,根據抽屜原理問題一定有解。
容易注意到 當且僅當 沒有進位。
容易想到把其中一個後面若干位設置成 ,這樣可以任意放。
那麼考慮求出 。
對於 ,於是不難發現,當 的時候,。
該做法在 的時候必然出解。
當然還可以枚舉上標爲 ,則 的時候可以找到一組解,不過原題限制很寬鬆,你甚至可以直接考慮 。
代碼:
#include<bits/stdc++.h>
#define ll long long
#define re register
#define cs const
using std::cerr;
using std::cout;
ll a;
ll pw[20];
void Main(){
std::cin>>a;
for(int re i=pw[0]=1;i<=18;++i)
pw[i]=pw[i-1]*10;
for(int re k=1;k<=18;++k){
ll p=pw[k-1]%a*k%a*45%a;
ll l=a-p,r=pw[k]+a-p-1;
if(l>=0&&l/9<=pw[k]){
cout<<l<<" "<<r<<"\n";
return ;
}
}cout<<"fuck\n";
}
inline void file(){
#ifdef zxyoi
freopen("hack.in","r",stdin);
#else
#ifndef ONLINE_JUDGE
freopen("hack.in","r",stdin);
freopen("hack.out","w",stdout);
#endif
#endif
}signed main(){file();Main();return 0;}