学士号を分割する
ここではいわゆる「バチェラー」、
独身という意味ではなく、1、11、111、1111などの1からなる数字です。伝説によると、どんな学士も5エンディング奇数除算。たとえば、111111は13で割り切れる可能性があります。今、あなたのプログラムは整数を読む必要がありますバツ、この整数は奇数で、5で終わらないようにする必要があります。次に、計算後、最初の数値の2つの数値を出力します。s、つまりバツ掛けるs独身、2番目の番号ですnこの学士号の数です。もちろん、そのような解決策はユニークではありません。問題は、最小の解決策を出力する必要があります。
ヒント:明らかな方法は、均等に分割できるようになるまで、独身者の数を徐々に増やすことです。バツまで。しかし、難しいのは、sこれは非常に大きな数になる可能性があります。たとえば、プログラムが31と入力した場合、3582249390681と15を出力します。これは、31に358429390681を掛けた結果が111111111111111であり、合計15であるためです。
入力形式:
1行に5で終わらない正の奇数を入力しますバツ(<1000)。
出力形式:
対応する最小値を1行で出力しますsとn、1つのスペースで区切られます。
入力サンプル:
31
出力サンプル:
3584229390681 15
分割をシミュレートすることによってそれを行います
上の写真!!!!!!
#include <stdio.h>
int main()
{
int x,s=0,n=0;
scanf("%d",&x);
while(s<x)
{
s=s*10+1;
n++;
}
while(1)
{
printf("%d",s/x);
s%=x;
if(s==0) break;
s=s*10+1;
n++ ;
}
printf(" %d\n",n);
return 0;
}