文档章节

Easy Problem 2 奇妙的数字

倾盆大雨
 倾盆大雨
发布于 2017/04/05 22:07
字数 830
阅读 40
收藏 0

原文地址:https://my.oschina.net/meiguizhinian/blog/873703

Description

有一种自然数,它的各位数字之和能被17整除。这个数的后继数(即这个数加1)的各位数字之和也能被17整除。求所有自然数中,从小到大第n个这样的数。

The Input

你的程序需要从标准输入设备(通常为键盘)中读入多组测试数据。每组输入数据占一行,其中仅有一个整数n(1≤n≤10)。在行首和行尾没有多余的空格。所有数据前后没有多余的空行,两组数据之间也没有多余的空行。

The Output

对每组测试数据,你的程序需要向标准输出设备(通常为启动该程序的终端)依次输出一组对应的答案。每组答案占一行,每行中仅有一个整数,即题问描述中的第n个数。在行首和行尾不要输出多余的空格。在所有数据的前后,以及两组数据之间不要输出多余的空行。

Sample Input

1
3

 

Sample Output

8899
17899

解题思路

    因为各位数字之和能被17整除,所以这数字各位之和是17的整数倍,所以最小值是89。

    因为各位数字之和+1后能被17整除,那么+1的时候必然发生了进位,所以个位数字一定是9。

    如果只发生1次进位,那么这个数字各位和+1前后的差值是8,那么必然有一个数字不能被17整除,所以十位数字也必然是9,不符合。

    如果发生了2次进位,那么这个数字各位和+1前后的差值是17,如果一个数可以被17整除,那么+1后必然可以被17整除。

    如果发生了3次进位,那么这个数字各位和+1前后的差值是26,不符合。

    如果发生了4次进位,那么这个数字各位和+1前后的差值是35,不符合。

    ...

    如果发生了n次进位,那么这个数字各位和+1前后的差值是9*n-1,这个差值要能被17整除。

    综上得到关系式:9*n-1=17*m。

    根据这个关系式,我们可以找出当n<10的时候,值有n=2符合条件。

    所以十位数字和个位数字都是9,而99不能被17整除,所以这个数至少是3位的,且百位数字不能为9

    十位数字+个位数字=18。

    那么其他位的数字和至少需要34-18=16,那么如果这个数字仅有3位,不达不到要求的。所以这个数字至少4位。

    形如:xa99(a!=9),x表示所有其他位数

    因为这个数字+1后也要能被17整除,所以x+a+1必须是是17的整数倍,那么x+a最小值是16,所以xa的最小值是88。

代码

#include <stdio.h>
int easy02_sum_digit(long num){
	int sum = 0;
	while (num) {
		sum+=num%10;
		num/=10;
	}
	return sum;
}

int main(){
	int k=0;
	int begin = 88;
	int list[10] = {};

	while (k!=10) {
		if ((easy02_sum_digit(begin)+18)%17==0 && easy02_sum_digit(begin+1)%17==0) {
			list[k++] = begin*100+99;
		}
		++begin;
	}
	while (scanf("%d",&k)!=EOF) {
		printf("%d\n",list[k-1]);
	}

	return 0;
}

 

© 著作权归作者所有

倾盆大雨
粉丝 2
博文 27
码字总数 7518
作品 1
合肥
程序员
私信 提问
无压工作第一弹---关于奇妙清单app使用

极度适用人群:觉得压力有些大,但是不知道自己是为什么事情烦恼。 全文导读 一、奇妙清单app使用背景情况 1.归属类别:任务管理工具(记录你所有想法) 2.功能:1.)清空大脑,释放压力2.)定点...

想做一只呆萌的猫
2018/01/11
0
0
[LeetCode] Counting Bits 计数位

Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1's in their binary representation and return them as an array. ......

机器的心脏
2017/12/15
0
0
Leetcode In Golang

LeetCode Problems' Solutions LeetCode Problems 1. Two Sum 题意:给出一个数组(数字不重复)和目标值,输出数组元素和为目标值的两个元素的下标,当且仅当只有一个解。 思路: 1.暴力算法 ...

SpiffyEight77
2018/11/29
0
0
欧拉计划的Python解法(1-10)

Problem 1. Multiples of 3 and 5 If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of......

prpr
2014/03/13
4.2K
3
Codeforces Hello 2018 D. Too Easy Problems 二分+贪心

D. Too Easy Problems 2 seconds 256 megabytes standard input standard output You are preparing for an exam on scheduling theory. The exam will last for exactly T milliseconds and......

ProLightsfxjh
2018/01/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部