数论
王猛旗
在读研究僧
展开
-
DZY Loves Partition
问题描述DZY喜欢拆分数字。他想知道能否把nn拆成恰好kk个不重复的正整数之和。思考了一会儿之后他发现这个题太简单,于是他想要最大化这kk个正整数的乘积。你能帮帮他吗?由于答案可能很大,请模1097109+7输出。输入描述第一行tt,表示有tt组数据。接下来tt组数据。每组数据包含一行两个正整数nkn,k。(1t502nk1091≤t≤50,2≤n,k≤10原创 2016-03-20 11:15:47 · 498 阅读 · 0 评论 -
A New Change Problem
题目链接/*给定两个互质的数,a,b,求这两个数不能表示的数的最大值和个数。最大值=a*b-a-b;个数 =(a-1)*(b-1)/2;*/#include <set>#include <map>#include <cmath>#include <queue>#include <cstdio>#include <cstring>#include <iostream>#inc原创 2016-08-10 14:43:22 · 558 阅读 · 0 评论 -
HDU 2802 F(N)(简单题,找循环解)
题目链接 F(N)Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4579 Accepted Submission(s): 1610Problem Description Giving the N, can you tell原创 2016-08-08 14:13:06 · 427 阅读 · 0 评论 -
求n!末尾0的个数
题目连接/*£:离散数学。£:n!中2的个数>5的个数。£:2*5=10;*/#include<cstdio>#include<cstring>#include<iostream>using namespace std;typedef long long LL;int N;int main (){ int T;scanf("%d",&T); while(T--原创 2016-08-07 11:21:14 · 329 阅读 · 0 评论 -
求N以内与N互质的数的和
题目连接/* 求所有小于N且与N不互质的数的和。 若:gcd(n,m)=1,那么gcd(n,n-m)=1; sum(n)=phi(n)*n/2; //sum(n)为小于n的所有与n互质的数的和 //phi(n)为小于n的所有与n互质的数的个数*/#include<cmath>#include<cstdlib>#include<vector>#i原创 2016-08-06 16:10:11 · 3406 阅读 · 1 评论 -
div.2/D. As Fast As Possible<数学题,二分>
题意:n个学生出去玩,要前进一段距离,租了一辆可以载k个人的车,问到达到目的地的最短时间。cin: n,l,v1,v2,k.£:所有人一起到达终点的时候时间最短。 £:所有人走路和坐车的时间相等。法一:公式推导:•求批次:if(n%k) cnt=n/k+1;else cnt=n/k;•设第一批人到达坐车到l1l1处下车,乘车时间为t1t1: l1=t1×v1=>t1=l1/v原创 2016-07-28 11:13:46 · 484 阅读 · 0 评论 -
三角形内部的整点的个数
题意:给出三角形的三个角的坐标,求出此三角形内部整数的个数。题解:s=l/2+n-1;s:三角形中包括边上整点的个数。l:边上的整点;n:三角形内部的点的个数。#include<cstdio>//s=l/2+n-1;#include<cmath>#include<cstdlib>int a,b,c,d,e,f;int area(){ return abs((a*d+c*f+原创 2016-06-15 00:30:30 · 4154 阅读 · 0 评论 -
小红的难题<递推>
题意:五个数:N,x,y,A,B;N是台阶总数,x,y是每步可以走x或者y步,但是一定要走到A,B台阶上。思路:学长给的题解,递推,稍微优化一点。>重点在递推#include#include#includeusing namespace std;typedef long long ll;int n,A,B,x,y;const ll mod=1000000007;原创 2016-05-18 23:35:49 · 743 阅读 · 0 评论 -
计算n!的位数<Math>
题意:如题目.方法一: * 可设想n!的结果是不大于10的M次幂的数,即n!<=10^M(10的M次方),则不小于M的最小整数就是 n!的位数,对 * 该式两边取对数,有 M =log10^n! 即:M = log10^1+log10^2+log10^3...+log10^n 循环求和,就能算得M值, * 该M是n!的精确位数。当n比较大的时候,这种方法方法需要花费原创 2016-05-06 18:04:31 · 641 阅读 · 0 评论 -
素数个数的位数<Math>
小明是一个聪明的孩子,对数论有着很浓烈的兴趣。他发现求1到正整数10^n (10的n次方)之间有多少个素数是一个很难的问题,该问题的难点在于决定于10^n 值的大小。 告诉你n的值,并且用ans表示小于10^n的素数的个数。 现在的问题是:ans这个数有多少位。输入数据有若干组,每组数据包含1个整数n(1 ->题解:素数有无穷多个,能估计出小于一个正实数X的素数有多少个,并用F(x)表原创 2016-05-06 16:17:53 · 811 阅读 · 0 评论 -
阶乘相关<同余与模算术>
题意:题目很简明:令S[n]=1*1!+2*2!+3*3!+4*4!+....+n*n!求S[n]%10000007多组测试数据每组一个nn的范围:1思路:看代码看懂的,数学真的有魔性。最重要的算法是,这个题还用了一个小技巧:在求n*n!的时候由于已经知道(n-1)!%mod=t,所以呢,只需要在t的基础上乘n即可。大神的代码,有改进。#includeconst原创 2016-05-16 21:06:40 · 909 阅读 · 0 评论 -
丑数<数学技巧>
题意:丑数就是质因子只有2,3,5 ,7,的数,另外1也是丑数。求第n(1=思路:根据丑数的定义,丑数应该是另一个丑数乘以2、3、5或者7的结果(1除外)。那么,现在最主要的问题是如何排序,而且使得求得数不重复。:从ans[1]=1,p1=1,p2=1,p3=1,p4=1,分别用2,3,5,7乘ans[px],得到一个v(min),这个v就是下一个ans,同时,对应的px++;技巧原创 2016-05-14 15:24:21 · 463 阅读 · 0 评论 -
康拓展开
康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0!其中,a[i]为整数,并且0a[i] 实际意义就是: 设一串数字中第n个数为s[n], a[i]表示第n个数之后的数比转载 2016-05-01 17:08:45 · 684 阅读 · 0 评论 -
HDOJ 1319 Prime Cuts<数论>
学会了不难。通过这道题学习了两点:1:筛选法求素数。2:在写比较长的程序的时候,给每个功能部分加上注释,思路会更清晰。题意:1.题目中所说的素数并不是真正的素数,包括1;2.需要读懂题意,对于输入的n和c,如果1到n之间有偶数个素数则打印2c个数,奇数个素数则打印2c-1个数;3.打印的数是所有素数中位于中间位置的那些数。4.虽然数据量n#inc原创 2016-05-10 12:00:04 · 985 阅读 · 0 评论 -
数学技巧类问题
一求N^N的最高位数:给定一个正数N(N 解法:令M = N^N,两边对10取对数,得log10(M) = N*log10(N).所以M = 10^(N*log10(N)).由于10的整数次幂最高位一定是1,所以答案取决于N*log10(N)的小数部分x。pow(10,x)即为答案。二:青蛙跳台阶问题(1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n原创 2016-03-23 12:46:12 · 350 阅读 · 0 评论 -
青蛙的约会<数论,extgcd>
青蛙的约会题意:在一个圆上有一个零刻度点,公青蛙和母青蛙分别在A点和B点<不同的位置>,他们每秒行走的距离分别是m和n,圆的周长是L。问题是这两个青蛙能不能相遇,若能在什么时候相遇?解: <对于初学者来说,解得过程是漫长的> 假设可以相遇,相遇的时间是x,并且相遇的时候快的比慢的多走了y圈,则可得方程:(A+m*X)-(B+n*X)=Y*L;整理得:(n-m)*X+L*Y=B-A;=原创 2016-05-30 21:10:56 · 949 阅读 · 0 评论