当前位置: 首页 > news >正文

SGU[107] 987654321 problem

Description

描述

For given number N you must output amount of N-digit numbers, such, that last digits of their square is equal to 987654321.

对于任意给定的数N,你需要输出平方的末尾为987654321的N位数的个数。

 

Input

输入

Input contains integer number N (1<=N<=106)

输入文件包含整数N(1 <= N <= 106)。


Output

输出

Write answer in output file.

将答案输出在输出文件上。


Sample Input

样例输入

8


Sample Output

样例输出

0

 

Analysis

分析

在一定意义上,这也是一道数学题。

由于一个数平方的后X位,只与这个数字的后X位有关系,所以我们不妨使用下面的程序打一个表来看一下。

#include <iostream>

using namespace std;

int main()
{
	// sqrt(987654321) > 30000
	for(long long i = 30000; i <= 999999999; i++)
	{
		long long x = i * i;
		if(x % 1000000000 == 987654321)
		{ cout << i << " "; }
	}
	return 0;
} 

打完表以后,我们发现只有8个数字满足条件,而且分布在100,000,000到999,999,999之间。

下面我们来推导满足题目条件的答案与输入的位数N的关系:

  • N <= 8,  0
  • N == 9,  8
  • N >= 10,    这种情况我们要稍微考虑一下,由于平方后的后9位只与原数的后9位有关,因此就变成了给定后9位(第二种情况下的8个答案作为后九位数字),前面N-9位数字的方案数,由排列组合以及N位数的要求,不难的出结论,72 * 10^(N - 10)

有了这个结论,我们就可以在O(1)时间内得到答案。

 

Solution

解决方案

#include <iostream>

using namespace std;

int main()
{
	int N;
	cin >> N;
	if(N <= 8)
	{ cout << 0 << endl; }
	else if(N == 9)
	{ cout << 8 << endl; }
	else
	{
		cout << 72 << endl;
		while(N - 10)
		{
			cout << 0;
			N--;
		}
	}
	return 0;
} 

 

这道题目最主要的是通过打表找出规律,然后通过数学方法,巧妙地将题目所要求的答案转换为前面N-9位上数字的排列方式,这样问题就得到了简化,也就很容易解决了。

转载于:https://www.cnblogs.com/Ivy-End/p/4262925.html

相关文章:

  • study notes: high performance linux server programming
  • 阿里云修改CentOS Linux服务器的主机名
  • JavaScript-4.6鼠标事件监听,获取鼠标坐标window.event---ShinePans
  • 清华差生10年奋斗经历 读大学的意义好处 人就是你越尊重别人,别人越尊重你 优秀是一种习惯,懒惰是一种惯性。人和人的差别又是就是因为每天积累差了一点点...
  • 使用MSSQL,连接oracle,对oracle数据进行操作
  • Html5+Css3 Banner Animation 多方位移动特效
  • 内存loaddll和shellcode 是不是都差不多呢?
  • 分享:我用一天时间开发的 新年送祝福 微信手机网站(可在线体验附图)(要代码的留下邮箱)...
  • java基础篇---HTTP协议
  • 【BZOJ】【2157】旅游
  • XmlSerializer
  • 网站推广--Html关键词代码解说
  • 根域名数据库地址
  • intent 几种用法
  • JS-DOM操作应用高级(二)
  • 【5+】跨webview多页面 触发事件(二)
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • AWS实战 - 利用IAM对S3做访问控制
  • bootstrap创建登录注册页面
  • canvas 五子棋游戏
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • SpringBoot 实战 (三) | 配置文件详解
  • 基于组件的设计工作流与界面抽象
  • 数据可视化之 Sankey 桑基图的实现
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • ​学习一下,什么是预包装食品?​
  • !!java web学习笔记(一到五)
  • #微信小程序(布局、渲染层基础知识)
  • %check_box% in rails :coditions={:has_many , :through}
  • (4)STL算法之比较
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (七)理解angular中的module和injector,即依赖注入
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Linux整合apache和tomcat构建Web服务器
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net对接阿里云CSB服务
  • .NET命令行(CLI)常用命令
  • .net网站发布-允许更新此预编译站点
  • @RequestMapping 的作用是什么?
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • []我的函数库
  • [20171113]修改表结构删除列相关问题4.txt
  • [383] 赎金信 js
  • [Android View] 可绘制形状 (Shape Xml)
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用