【PTA】7-42割り切れるシングル(20分)

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

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

入力フォーマット:
正の奇数X(<1000)の端部にライン5に示す入力。

出力形式:
出力行に対応する最小のnおよびsは、隙間によって分離されました。

サンプル入力:
31

サンプル出力:
358,422,939,068,115

#include<stdio.h>

int main(){
    int x;
    scanf("%d",&x);
    int s=1; //用来表示光棍
    int c=1; //储存位数
    while(s<x){
        s=s*10+1; //光棍至少要比x大吧!
        c++;
    do{
        y=s%x; //储存余数
        printf("%d",s/x); 
        if(y==0){
            break;
        }
        s=y*10+1;
        c++;
    }while(y!=0); //自己手算一下111/15 就能理解了
    printf(" %d",c);
    return 0;
}
公開された48元の記事 ウォンの賞賛0 ビュー300

おすすめ

転載: blog.csdn.net/weixin_46399138/article/details/105423614