(进制)51NOD 1057 N的阶乘】的更多相关文章

输入N求N的阶乘的准确值.   Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120解:这其实是MOD进制,将一个int或者long long数据类型作为一个数位,满MOD进一(本题中MOD=1000000000). (注意选择合适的数据类型,避免计算过程中数据溢出.) #include <stdio.h> #define MOD 1000000000 ]; int main() { int n; while…
1057 N的阶乘 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题   输入N求N的阶乘的准确值.   Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120 #include <bits/stdc++.h> #define clear(a) memset(a,0,sizeof(a)) using namespace std; typedef long long ll; const…
题目地址:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1057&judgeId=605203 使用压位进行优化,即一位数存多位数,例如当设置MOD=1e8时,一位数可以存8位数: 其次,注意尾数0,因为压位,一位需要输出8个0,故第一个数应单独输出: 这样优化可以到100ms以内: #include<iostream> #include<cstring> #include<cstdio&g…
输入N求N的阶乘的准确值.   Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120 压位: 每个数组元素存多位数字 #include <cstdio> #include <string> #include <cstring> #include <algorithm> #include <iostream> #include <cmath> usin…
题意: 给出两个数字a和b,求a的阶乘转换成b进制后,输出 (1)后缀中有多少个连续的0? (2)数a的b进制表示法中有多少位? 思路:逐个问题解决. 设a!=k.  k暂时不用直接转成b进制. (1)阶乘后缀0问题.先看这个十进制后缀0的例子:http://www.cnblogs.com/xcw0754/p/4604473.html 解法差不多,稍变化. 首先将b分解成若干质数(比如8={2*2*2})保存在一个集合A中(注意自然数的质数分解是唯一的),只要有一个序列A就能构成一个0,因为满b…
题目链接:51nod 1057 N的阶乘 #include<cstdio> using namespace std; typedef long long ll; ; const int mod = 1e8; ll a[N] = {}; int n; int main(){ int i, j, c, cnt; scanf("%d", &n); cnt = ; ; j <= n; ++j){ ; i <cnt; ++i){ a[i] = a[i] * j +…
思路:刚开始用的十进制模拟手算加法,超时了.然后想到刘汝佳大哥书上面用的亿进制能够加速大数运算,果然180ms过掉了. 亿进制与十进制相同,只不过是把八位看做一位,例如6464654654165,看成亿进制就是64646,54654165,这样运算时可以同时计算八位,快了很多.当然,想更快可以使用更高的进制,但注意不要超出long long范围 AC代码 #include <cstdio> #include <cmath> #include <algorithm> #i…
1449 砝码称重 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 现在有好多种砝码,他们的重量是 w0,w1,w2,...  每种各一个.问用这些砝码能不能表示一个重量为m的东西. 样例解释:可以将重物和3放到一个托盘中,9和1放到另外一个托盘中. Input 单组测试数据. 第一行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9). Output 如果能,输出YES,否则输出NO.…
题意: 给你w,n,问你在w^0,w^1,w^2...各种一个,问你能不能用这些砝码和重量为m的东西放在天平上使得天平平衡: 思路: 这个很容易联想到进制: 如果把m放在是一边的话,其实对于砝码就是纯粹的相加,能不能被表示成这样一个进制,每个位上就是是0或1 那么如果两边都要放呢? 所以就是说我要怎么利用m和已拥有的,构造一个仅有01的进制数 为什么这么说呢?因为是左边右边等价啊: 然后从低位往高位处理,保证砝码利用次数<=1; #include <bits/stdc++.h> usin…
题意 : 求一个数 n 的阶层在 m 进制下末尾 0 的个数 思路分析 : 如果是 10 进制地话我们是很容易知道怎么做的,数一下其对 5 约数地个数即可,但是换成 m 进制的话就需要先将 m 分解质因数,然后然后看 n! 下因数个数最少的是几个,即是最终答案. 代码示例 : #define ll long long const ll maxn = 1e6+5; const ll mod = 1e9+7; const double eps = 1e-9; const double pi = ac…