L1-046 整除光棍 (20 分)567

简介: L1-046 整除光棍 (20 分)567

L1-046 整除光棍 (20 分)


这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。


提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 —— 比如,程序输入31,那么就输出3584229390681和15,因为31乘以3584229390681的结果是111111111111111,一共15个1。


输入格式:

输入在一行中给出一个不以5结尾的正奇数x(<1000)。


输出格式:


在一行中输出相应的最小的s和n,其间以1个空格分隔。



输入样例:


31


输出样例:


3584229390681 15


不知道怎么处理前导零的情况,然后就这样的错了


4449163f0727499d9b8afe858d96bf95.png


#include<iostream>
using namespace std;
int main()
{
  int n, len = 0, p = 0, now = 1;
  char ans[1000]={};
  cin >> n;
  while (1)
  {
    len++;
    if (p || now)
    {
      ans[p++] = now / n + '0';
    }
    now %= n;
    if (now == 0)
    {
      ans[p] = '\0';
      printf("%s %d", ans, len);
      break;
    }
    now = now * 10 + 1;
  }
  return 0;
}


不用大数除法来做的代码


#include<iostream>
using namespace std;
int main()
{
  string ans;
  int cnt = 1, t = 1, x;
  cin >> x;
  while (t < x){
    t = t * 10 + 1;
    cnt++;
  }
  while (t % x){
    ans += t / x + '0';
    t = t % x * 10 + 1;
    cnt++;
  }
  ans += t / x + '0';
  cout << ans << ' ' << cnt;
  return 0;
}
目录
相关文章
|
1月前
|
算法
容斥原理:能被整除的数
容斥原理:能被整除的数
|
1月前
|
算法 C语言
(“拨”取数字的典例:N位水仙花数判断及水仙花数变种)
这篇内容介绍了如何判断和生成水仙花数,水仙花数是一个n位数,其各位数字的n次方之和等于该数本身。文章首先回顾了"拨数"的概念,然后通过实例展示了如何判断三位水仙花数,并将其推广到任意位数的水仙花数。作者提供了详细的解题思路和代码示例,强调了解决这类问题时要慢下来,分步骤分析问题。最后,文章还探讨了一个水仙花数的变种问题,即数字拆分后乘积之和等于原数的情况。
37 0
|
1月前
62.编程求所有的三位素数,且要求该数是对称数
62.编程求所有的三位素数,且要求该数是对称数
22 0
|
1月前
|
测试技术
[蓝桥杯 2020 省 B1] 整除序列
[蓝桥杯 2020 省 B1] 整除序列
28 0
|
11月前
|
Python
【每周一坑】​正整数分解质因数 +【解答】计算100以内质数之和
关于分解质因数:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫做分解质因数。分解质因数只针对合数。
|
算法 C++
【基础算法】几种特殊数(素数、公约数、完全数、亲密数) & C++实现
素数又称为质数,它指在一个大于1的自然数中,除了1和它自身外,没法被其他自然数整除的数。比1大,但不是素数的数称为合数。0和1既不是素数,也不是合数。因为素数的分布没有明显的规律,所以在程序中一般根据素数的定义来判断该数是否为素数。例如哥德巴赫猜想:哥德巴赫通过大量的数据猜测,所有不小于6的偶数,都可以表示为两个奇素数之和。后人将其称之为“1+1”。并且,对于每个不小于9的奇数,都可以表示为三个奇素数之和。
263 0
【基础算法】几种特殊数(素数、公约数、完全数、亲密数) & C++实现
PTA 7-4 素数等差数列 (20 分)
2004 年,陶哲轩(Terence Tao)和本·格林(Ben Green)证明了:对于任意大的 n,均存在 n 项全由素数组成的等差数列。
85 0
PTA 1091 N-自守数 (15 分)
如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”。
107 0
L1-046 整除光棍 (20 分)
L1-046 整除光棍 (20 分)
105 0
|
算法
7-1 最大子列和问题 (20 分)
7-1 最大子列和问题 (20 分)
123 0