7-6割り切れる学士

7-6割り切れる学士

ここで、「学士」はない平均の友人をして-シングル王によると、1で構成番号など1,11,111,1111などのすべて。凡例は、学士は5で奇数の倍数で終わっていないのいずれかであり得ます。例えば、111111 13は、分割してもよいです。さて、あなたのプログラムが整数を読み取るためにx、整数は5の終わりに、確かではない奇妙です。次いで、算出した後、2つの数値を出力する:最初の番号がs示すx乗算されるs暴漢、2番目の数字はn暴漢のビット数です。このようなソリューションは、確かにあなたの最も小さい出力ソリューションとして要求だけ、対象ではありません。

ヒント:1つの明白な方法は、徐々にビットの学士割り切れるまで数増やすことであるxこれまでのところを。しかし困難s非常に多数であってもよい-結果は31 3584229390681乗算されるので、例えば、プログラム入力31、3,584,229,390,681及び15の出力は111111111111111、15 1の合計です。

入力フォーマット:

所与の入力ラインに5正の奇数の終わりではないx(<1000)。

出力フォーマット:

行の最小出力に対応するsn、隙間によって分離されました。

サンプル入力:

31

 

出力例:

3584229390681 15

BREAK、あれば、現在の分割NUM Xのかどうか、次に*シングルの各現在の数を聞かせて10 + 1次に分割されるまで所定の数よりも大きい、S1格納された文字列xの数で分割された各シングル、及び、 NUM * 10 + 1で割ったXのない残りはNUMに割り当てられている場合、すなわち、シミュレーション部門、小さな範囲内にない時間をNUM変化を確実。

#include <bits/stdc++.h>

using namespace std;
int main()
{
    int x,n,l=0,num=1,i=0;
    char s1[10000];
    cin>>x;
    while(num<x){   //保证当前光棍数大于所给的x
         num=num*10+1;
         l++;
    }
    while(1){
        s1[i++]=num/x+'0';//存光棍数除以x的商
        l++;//记录长度
        if(num%x==0)
            break;
        num=num%x*10+1;

    }
    cout<<s1<<" "<<l;
    return 0;
}

 

公開された14元の記事 ウォン称賛41 ビュー30000 +

おすすめ

転載: blog.csdn.net/qq_42145681/article/details/103964946