一开始乱搞...打表,后面发现好几个数(99,198,189) 都输不出来就continue掉了,后来发现应该可以在long long以内,
就开心地爆搜了一发,发现有些数爆了,改了ull一发,有些数 (99) 出来了,就198搜不出来,然后强行n=198的时候,输出的时候continue掉,后来就过了...233333
后面搜了一发题解发现,位数可以19位(其实是20位),对哦!
unsigned __int64的最大值:18446744073709551615
思路:
乱搞。好像网上有【BFS+同余】还是去学习一下吧~
//#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
#include<map>
#include<queue>
#include<cmath>
#include<algorithm>
typedef long long LL;
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
const int INF=0x3f3f3f3f;
unsigned long long ans;
LL n;
bool flag;
void DFS(unsigned long long cur,int num)
{
if(flag||num>19) return;
if(cur%n==0)
{
ans=cur;
flag=true;
return;
}
DFS(cur*10,num+1);
DFS(cur*10+1LL,num+1);
}
int main()
{
while(scanf("%lld",&n) && n)
{
// if(n==198){
// puts("1111111111111111110");
// continue;
// }
flag=false;
DFS(1,1);
printf("%llu\n",ans);
}
return 0;
}