ここでいういわゆる「学士」とは、一人を意味するものではありません〜1、11、111、1111など1からなる数字です。伝説によると、学士号は5で終わらない奇数で割り切れる可能性があります。たとえば、111111は13で割り切れる可能性があります。ここで、プログラムは整数を読み取るx
必要があります。この整数は奇数で、5で終わっていない必要があります。次に、計算後、2つの数値を出力します。最初の数値s
はx
乗数s
が学士であることを示し、2番目の数値n
は学士の桁数です。もちろん、そのような解決策はユニークではありません。問題は、最小の解決策を出力する必要があります。
ヒント:明らかな方法は、独身者の数を徐々に増やして、均等に分割できるようにすることx
です。ただし、s
非常に大きな数になる可能性があるという問題があります。たとえば、プログラムが31と入力すると、31に358429390681を掛けた結果が111111111111111、合計15になるため、3582259390681と15が出力されます。
入力フォーマット:
1行に5で終わらない正の奇数x
(<1000)を入力します。
出力フォーマット:
行s
とn
、の間のスペースで区切られた、対応する最小出力。
入力サンプル:
31
サンプル出力:
3584229390681 15
ACコード:
// main.cpp
// 猫猫头
//
// Created by Mintink on 2020/1/12.
// Copyright © 2020 Mintink. All rights reserved.
//
#include<iostream>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<set>
#include<numeric>
#include<vector>
#include<queue>
#include<array>
#include <stdlib.h>
#include <stdio.h>
#include<cstdio>
#define _USE_MATH_DEFINES
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
//tuple<int,string,int>p[55];
//pair<int,string>male[55],female[55];
priority_queue<ll,vector<ll>,greater<ll> >qa;//升序,大根堆
priority_queue<ll>qd;//降序,小根堆
//const int mod=10e9+7;
typedef long long ll;
//vector<int>v;
/*
//Max common factor
ll gcd(ll a,ll b)
{
ll m;
m=a%b;
while(m!=0)
{
a=b;
b=m;
m=a%b;
}
return b;
}*/
int main()
{
int x;
cin>>x;
int n=1;
ll s=1;
while(s<x)
{
s=s*10+1;
n++;
}
while(1)
{
cout<<s/x;
if(s%x==0)
break;
s=(s%x)*10+1;
n++;
}
cout<<" "<<n<<endl;
return 0;
}