poj 1150 The Last Non-zero Digit
/**
大意: 求A(n,m)的结果中从左到右第一个非零数
思路: 0是由2*5的得到的,所以将n!中的2,5约掉可得(2的数目比5多,最后再考虑进去即可)
那n!中2 的个数怎么求呢?
int get2(int n){
if(n==0)
return 0;
return n/2+get2(n/2);
}
eg: 1*2*3*4*5*6*7*8*9*10 约去2,5可得,,1*1*3*1*1*3*7*1*9*1
所以最后肯定是3,7,9.。的数列,,那么在最后的数列中3,7,9,有多少个呢?
可以这样考虑: 1,2,3,4,5,6,7,8,9,10 可以分为奇偶数列 即 1,3,5,7,9 2,4,6,8,10===>2*(1,2,3,4,5)
这就出现了递归,,g(n) = g(n/2)+f(n) { f(n)为奇数列 }
那在奇数列中怎么找3,7,9 的个数呢?
1,3,5,7,9,11,13,15,17,19 有可以再分 1,3,7,9,11,13,17,19 ///5,15,25 ====〉5*(1,3,5)
这里有出现了递归,,f(n,x) = n/10 + (n%10>=x) + f(n/5,x)
**/ #include <iostream>
using namespace std; int s[][]={
{,,,},{,,,},{,,,},{,,,}
};
int get2(int n){
if(n==)
return ;
return n/+get2(n/);
} int get5(int n){
if(n==)
return ;
return n/+get5(n/);
} int get(int n,int x){
if(n==)
return ;
return n/+(n%>=x)+get(n/,x);
} int getx(int n,int x){
if(n==)
return ;
int res =;
res = getx(n/,x)+get(n,x);
return res;
} int main()
{
int n,m;
while(cin>>n>>m){
int num2 = get2(n)-get2(n-m);
int num5 = get5(n)-get5(n-m);
int num3 = getx(n,)-getx(n-m,);
int num7 = getx(n,)-getx(n-m,);
int num9 = getx(n,)-getx(n-m,);
if(num2<num5){
cout<<<<endl;
continue;
}else{
int res =;
if(num2!=num5){
num2 = num2-num5;
res = res*s[][num2%];
res = res%;
}
res *= s[][num3%];
res %=;
res *= s[][num7%];
res %=;
res *= s[][num9%];
res = res%;
cout<<res<<endl;
}
}
return ;
}
poj 1150 The Last Non-zero Digit的更多相关文章
- POJ 1150 The Last Non-zero Digit 数论+容斥
POJ 1150 The Last Non-zero Digit 数论+容斥 题目地址: id=1150" rel="nofollow" style="colo ...
- #数论-模运算#POJ 1150、1284、2115
1.POJ 1150 The Last Non-zero Digit #质因数分解+模运算分治# 先贴两份题解: http://www.hankcs.com/program/algorithm/poj ...
- 最后一个非零数字(POJ 1604、POJ 1150、POJ 3406)
POJ中有些问题给出了一个长数字序列(即序列中的数字非常多),这个长数字序列的生成有一定的规律,要求求出这个长数字序列中某个位上的数字是多少.这种问题通过分析,找出规律就容易解决. 例如,N!是一个非 ...
- Codeforces Round #449 (Div. 2) B. Chtholly's request【偶数位回文数】
B. Chtholly's request time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- POJ 3187 Backward Digit Sums 枚举水~
POJ 3187 Backward Digit Sums http://poj.org/problem?id=3187 题目大意: 给你一个原始的数字序列: 3 1 2 4 他可以相邻 ...
- Backward Digit Sums(POJ 3187)
Backward Digit Sums Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5495 Accepted: 31 ...
- 穷竭搜索:POJ 3187 Backward Digit Sums
题目:http://poj.org/problem?id=3187 题意: 像这样,输入N : 表示层数,输入over表示最后一层的数字,然后这是一个杨辉三角,根据这个公式,由最后一层的数,推出第一行 ...
- 【POJ - 3187】Backward Digit Sums(搜索)
-->Backward Digit Sums 直接写中文了 Descriptions: FJ 和 他的奶牛们在玩一个心理游戏.他们以某种方式写下1至N的数字(1<=N<=10). 然 ...
- Enum:Backward Digit Sums(POJ 3187)
反过来推 题目大意:就是农夫和这只牛又杠上了(怎么老是牛啊,能换点花样吗),给出一行数(从1到N),按杨辉三角的形式叠加到最后,可以得到一个数,现在反过来问你,如果我给你这个数,你找出一开始的序列(可 ...
随机推荐
- 解决magento保存产品时耗时很长的问题
以前我在更新产品属性值(拿price为例)的时候,通常会这样做: foreach($product_ids as $id){ $product = Mage::getModel('catalog/pr ...
- MD5的加密和解密(总结)
效果图例如以下: package com.test; import java.security.MessageDigest; public class MD5 { // MD5加码.32位 publi ...
- MVC5.0 中如何提高Controller 的优先级
//在area下建立的Home namespace WebApplication8.Areas.Weather.Controllers { public class HomeController : ...
- css3选择器的比较(三) -- 元素选择器 (+, ~)
元素选择器中w3cschool中有些翻译不太准确 比如 +:其实是与element1元素同级,位于element1元素之后的第一个element2元素 ~:其实是与element1元素同级,位于ele ...
- Oracle中的Spool缓冲池技术可以实现Oracle导出txt格式文件
利用Oracle中的Spool缓冲池技术可以实现Oracle数据导出到文本文件 1.在Oracle PL/SQL中输入缓冲开始命令,并指定输出的文件名: spool d:output.txt; 2.设 ...
- 小猪猪C++笔记基础篇(五)表达式、语句
小猪猪C++笔记基础篇(五) 关键词:表达式.语句 本章的内容比较简单,基本上没有什么理解上的困难,都是知识上的问题.先开始想要不要写呢,本来是不准备写的,但是既然读了书就要做笔记,还是写一写,毕竟还 ...
- UVa10082 WERTYU
#include <stdio.h>#include <string.h> int main(){ // 用C++提交AC char s[] = "`12345 ...
- 1.1. chromium源代码分析 - chromiumframe - 介绍
本人能力有效,面对chromium庞大的代码就头大.还是先由前辈的chromiumFrame入手. 1. chromeFrame概貌 chromiumFrame是前辈的心血之作,以最小化的方式抽出ch ...
- Problem G: Keywords Search
Problem G: Keywords SearchTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 10 Solved: 6[Submit][Status] ...
- tomcat管理员manager app无法进入解决方法
浏览器输入http://localhost:8080/进入tomcat页面后,点击manager app输入用户名(admin)密码(admin)后页面跳转出现如下错误:备注:tomcat7.0.39 ...