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;
}
目录
相关文章
|
9月前
L1-043 阅览室 (20 分)(在线模拟题)
L1-043 阅览室 (20 分)(在线模拟题)
68 0
|
IDE 编译器 开发工具
Dev C++下载地址和安装教程(图解版)
Dev C++ 是一款免费开源的 C/C++ IDE,内嵌 GCC 编译器(GCC 编译器的 Windows 移植版),是 NOI、NOIP 等比赛的指定工具。Dev C++ 的优点是体积小(只有几十兆)、安装卸载方便、学习成本低,缺点是调试功能弱。
47938 0
Dev C++下载地址和安装教程(图解版)
|
9月前
|
移动开发 安全 Linux
2024龙年新版ui周易测算网站H5源码/在线起名网站源码/运势测算网站系统源码
2024龙年新版ui周易测算网站H5源码/在线起名网站源码/运势测算网站系统源码
342 0
2024龙年新版ui周易测算网站H5源码/在线起名网站源码/运势测算网站系统源码
|
前端开发
【前端统计图】echarts多条折线图和横柱状图实现
【前端统计图】echarts多条折线图和横柱状图实现
134 0
|
算法 C语言
算法竞赛入门【码蹄集新手村600题】(MT1120-1140)C语言(一)
算法竞赛入门【码蹄集新手村600题】(MT1120-1140)C语言
194 1
|
机器学习/深度学习 C语言 C++
信奥赛一本通1150:求正整数2和n之间的完全数
题目描述】 求正整数2和n之间的完全数(一行一个数)。 完全数:因子之和等于它本身的自然数,如 6=1+2+3 【输入】 输入n(n≤5000)。 【输出】 一行一个数,按由小到大的顺序。 【输入样例】 7 【输出样例】
618 0
|
C++
信奥赛一本通1122:计算鞍点
【题目描述】 给定一个5×5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。 例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。 11 3 5 6 9 12 4 7 8 10 10 5 6 9 11 8 6 4 7 2 15 10 11 20 25
702 0
|
Cloud Native 安全 Java
带你读《云原生机密计算最佳实践白皮书》——03云原生机密计算SIG概述
带你读《云原生机密计算最佳实践白皮书》——03云原生机密计算SIG概述
465 0
|
Kubernetes 安全 Cloud Native
带你读《云原生机密计算最佳实践白皮书》——AMD SEV机密容器(1)
带你读《云原生机密计算最佳实践白皮书》——AMD SEV机密容器(1)
490 0
|
存储 Java 程序员
学生教务系统(java实现版)【附全部源码】
学生教务系统【java实现版附源码】 🍅 作者:程序员小王 🍅 程序员小王的博客:https://www.wolai.com/wnaghengjie/ahNwvAUPG2Hb1Sy7Z8waaF 🍅 扫描主页左侧二维码,加我微信 一起学习、一起进步 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
296 0
学生教务系统(java实现版)【附全部源码】

热门文章

最新文章