PTAプログラミングラダートーナメントL1-046分割学士

学士号を分割する

ここではいわゆる「バチェラー」、

独身という意味ではなく、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行で出力しますsn、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;
}

おすすめ

転載: blog.csdn.net/qq_52765554/article/details/115037431