齐大第十一届校赛第二题
时间限制:1000ms 内存限制:65535KB
题目描述:
最近 koala 学习了数论,智商不高的他觉得数论十分复杂,但是他喜欢上了数字 7 ,因为 7 是个位数中最大的质数。
为了表达对 7 的赞美之情,他创造了一个长度是无限的数列,并取名为 "七大数列" ,记为 a,数列上的每一个数字记为 ai。这个数列完全由数字 7 构成,而且具有严格的单调性,富有美感,koala 对此十分满意。简单描述,"七大数列" 的第一个数字是7 ,第二个数字是77 ,第三个数字是777 ……,第100个数字由100个7组成 ,…… ,即
a1=7 , a2=77 , a3=777 , a4=7777 , a5=77777 .....
而 Cola 喜欢的数字是 n ,不仅如此,n 的倍数Cola也都喜欢 。身为好朋友,koala 想知道数列中第几个数字是Cola喜欢的,当然这样的数字可能有很多个,请告诉koala "七大数列" 中最小的Cola喜欢的数是第几个就可以啦。即:满足 λn=ax中x的最小值(λ∈N∗) 。但是毫无疑问 koala 解决不了如此复杂的数列问题,又不好意思问 Cola 同学,于是他找到了您。如果您能帮助他解决这个问题,就可以得到一堆皱皱巴巴的糖果。
现在,请您请编写一个程序求出 x 的最小值,若 x 不存在,则输出 −1。
输入格式:
一个正整数n , 表示 Cola 喜欢的数。(1≤n≤106)
输出格式:
一个整数,表示数列中第几个数是Cola喜欢的。
代码实现:
#include <iostream>
using namespace std;
const int MAX=1000000;
bool a[MAX];
int main()
{
int k,t=0,ans=0;
cin>>k;
while(true)
{
t=t*10+7;
t%=k;
ans++;
if(t==0)
break;
if(a[t])
{
ans=-1;
break;
}
a[t]=true;
}
cout<<ans<<endl;
return 0;
}
本题并不难,但容易被样例带偏思路,要想到例如777能被3整除,本题就变得容易起来