码迷,mamicode.com
首页 > 其他好文 > 详细

整除光棍

时间:2020-05-30 16:04:40      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:std   space   输出   fine   and   head   math   return   定义   

题目:整除光棍(数学,思维)

题目链接:https://pintia.cn/problemsets/994805046380707840/problems/994805084284633088

题目大意:

  给出光棍数定义:(如1,11,111) 而且任何一个光棍都能被一个不以5结尾的奇数整除。给出一个 x  (一个不以5结尾的奇数整除) 让你输出最小的s

使得 x * s = 光棍数 ,并输出光棍数的位数。

思路: 

通过题目给出的定义,很显然 x * s = 光棍数 这个式子要去变成  s = 光棍数 / x 的形式 , 这里可能想到暴力枚举光棍数的位数,但题目说明这样会超时,再回头看转换的式子,可以写一下 光棍数 / x  的情形,因为光棍数每一位都相等为1,这个可以看成一小段的111(位数不定)/ x 得到 s 的首位,后面又变成  (小段光棍数 % x) * 10 + 1, 即位数往后推1位,再进行这样的操作得到 s 的第二位,直到 取的小段光棍数被整除结束。

解题代码:

//        .--------------.
//        | Try First One|
//        ‘--------------‘
//                |     .--------------.
//                |     |              |
//                V     V              |
//              .--------------.       |
//              |      AC.     |<---.  |
//              ‘--------------‘    |  |
//              (True)|  |(False)   |  |
//           .--------‘  |          |  |
//           |           V          |  |
//           |  .--------------.    |  |
//           |  |   Try Again  |----‘  |
//           |  ‘--------------‘       |
//           |                         |
//           |  .--------------.       |
//           ‘->| Try Next One |-------‘
//              ‘--------------‘
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
using namespace std;
const long long N = 1e10 + 7;
const int maxn = 2e5 + 5;
const long long INF = 8e18;
typedef long long ll;
#define for0(i,n) for(int i = 0;i < n;i++)
#define for1(i,n) for(int i = 1;i <= n;i++)
int main()
{
    ll x,num = 1,temp = 1;
    cin >> x;
    while(temp < x){
        temp = temp*10 + 1;  //寻找一开始的除数
        num++;   //每次推移多一位1
    }
    while(1){
        cout << temp/x ;  //开始输出s的每一位
        if(temp%x == 0)
            break;
        temp = (temp%x) * 10 + 1;  //推移到下一位
        num++;   //每次推移多一位1
    }
    cout << " " << num << endl;


    return 0;
}

 

整除光棍

标签:std   space   输出   fine   and   head   math   return   定义   

原文地址:https://www.cnblogs.com/emhhbw/p/12992559.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!