最先想到的是暴力,但是数据给到了31的答案就已经很大了,但还是试了一下能拿15分,其实问题的本质还是除法我们去模拟这个除法的过程
注意:遇到不够怎么办例如303➗101这个0怎么去表示,这里想到的是特判,对于前i位能除以x
的数做特判,因为第一位肯定不会位0,这个特判是181这个位置比x小填0。最后一位即y能够整除x即y%x==0。
#include<iostream>
using namespace std;
int main()
{
int x,y=0,cnt,op=0,i;
cin>>x;
for( i=1;;i++) //for循环模拟的是位数
{
y=y*10+1;
if(y>=x) //直到能除才会输出
{
op=1;
cout<<y/x;
}
else if(op==1) printf("0"); //如果太小此位填零
y=y%x;
if(y==0) break; //模拟了除法
}
cout<<' '<<i;
return 0;
}