程序设计与分析(c++实现)
nowting_csdn
这个作者很懒,什么都没留下…
展开
-
城市间的球面距离
这里的代码没有考虑南北纬问题,以及东西经度情况代码:#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <iomanip>using namespace std;#define PI 3.1415926ch...原创 2019-04-24 15:24:13 · 1037 阅读 · 0 评论 -
数塔问题
问题描述: 对任意的正整数n,求由n层n构成的数nnn⋅⋅⋅nn^{n^{n^{·^{·^{·^{n}}}}}}nnn⋅⋅⋅n的个位数。输入: 输入文件的第一行是整数T(0<T≤500<T \leq 500<T≤50),接下来的T行每行有一个整数n(0<T≤10100<T \leq 10^{10}0<T≤1010...转载 2019-07-17 18:14:03 · 141 阅读 · 1 评论 -
全排列的字典序法
求X={1,2,3,4,5,6,7}上的排列P=2637541的下一个排列Q。下面直接讲如何操作:先从右往左找出bi右边数字小(即j=max(i∣ai<ai+1)j=max(i|a_i<a_{i+1})j=max(i∣ai<ai+1))的第一个数,即3所在的位置可能是引起变动的最左位置。再从右往左考察比3大的第一个数(即k=max(ai>aj...转载 2019-07-19 20:46:33 · 313 阅读 · 0 评论 -
哥德巴赫猜想
题目大意:给你一个偶数n(6<=n<=1 000 000),输入0表示输入结束,输出形如n = a + b的形式,若有多组结果,取b-a最大的一组输入样例8 20 42 0输出样例8 = 3 + 520 = 3 + 1742 = 5 + 17分析:当n<1 000 000时,采用埃拉托色尼筛法,有超时的可能。代码:#include <bits/stdc+...原创 2019-07-19 16:23:56 · 203 阅读 · 0 评论 -
素数伴侣
题目链接:链接输入:输入文件的第一行有一个正整数N,其中N不超过200,表示待挑选的自然数个数,第二行给出N个不超过30 000的正整数,相邻的两个数之间用一个空格分隔开。输出:对每个正整数N输出一个K,输出“最佳方案”组成“素数伴侣”对数,每个数不能重复使用,如2 5 6 13,假如将5,6分在一组,对数只有1对,而将2,5一组,6,13一组,对数有两对。样例输入42 5 6 13...原创 2019-07-24 10:48:30 · 2699 阅读 · 0 评论 -
最大公约数与最小公倍数问题
题目描述:输入两个正整数x0,y0x_0,y_0x0,y0,2<=x0,y0x_0,y_0x0,y0<=100 000,1求出满足下列条件的P,Q的个数,条件:(1)P,Q是正整数(2)要求P,Q以x0x_0x0为最大公约数,以y0y_0y0为最小公倍数。分析:满足要求的P,Q会满足如下条件:令P=a x0,Q=bx0,那么gcd(a,b)=1,同时y0=PQ/...原创 2019-07-29 11:00:41 · 111 阅读 · 0 评论 -
幸运数
题目大意:输入L(1<=L<=2*10^9)(输入为0时表示结束),幸运数是仅由8组成且是L的最小倍数的那一个数,输出幸运数的位数,若不存在输出0.分析:888⋅⋅⋅⋅8(k个8)=Lq,那么L=2tm,0<=t<=3且m无5的因子23∗111⋅⋅⋅⋅1(k个1)=2tm23−t∗111⋅⋅⋅1(k个1)=m(10k−1)/9=mq1所以10k=1mod...转载 2019-07-19 10:46:12 · 318 阅读 · 0 评论 -
负数进制转换
#include <bits/stdc++.h>using namespace std;#define ll long long char dig[21]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K'};ll r,base,m;//r->余数...原创 2019-07-06 22:13:25 · 2529 阅读 · 0 评论 -
Josephus问题(约瑟夫环)
这里将其中一种:问题描述: 一堆猴子都有编号,编号是1,2,3 …m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。输入: m,n. (m, n<10000)输出: 大王的编号模拟实现的代码:#include <iostream>#incl...原创 2019-07-01 11:43:27 · 5103 阅读 · 2 评论 -
邮票问题(两张邮票)
题意: 输入两个正整数a,b,(a,b<65000)表示两张邮票的面值,问有多少种情况不能由这两张邮票来贴。思路: ①a,b互质,结果为有限个。输出个数为(a-1)(b-1)/2 ,证明略 ②a,b不互质,结果为无穷个。输出“infinite”代码:#include <bits/stdc++.h>using namespace std;#def...原创 2019-07-01 11:32:12 · 305 阅读 · 0 评论 -
Magic Horse
题意: 在一个无穷大的棋盘上,有一只Magic Horse,它每次能跳一个a×\times×b大小的位置。输入a,b;问Magic Horse能否去棋盘的任何一个位置思路: 此题不能枚举,只能通过观察和理论上的证明。这里直接给出结论(证明略):若a,b同时满足以下两个条件,则能;否则不能;①a+b是奇数,即a,b奇偶性不同②a,b互质,即gcd(a,b)=1...转载 2019-06-30 20:37:59 · 243 阅读 · 0 评论 -
二次剩余与Pell方程
二次剩余的定义: 考虑一个素数和一个不被p整除的整数a(即p%a!=0)。如果有整数x,使得x2≡a(mod p)x^{2} \equiv a (mod \ p)x2≡a(mod p),那么称a为p的二次剩余;否则就称a为p的二次非剩余。例如,2和4都是7的二次剩余 关于加快二次剩余的计算,勒让德(A. M. Lagrange, 1752—1833)引入了如...原创 2019-08-04 12:34:05 · 1088 阅读 · 0 评论 -
素数测试
普通代码:bool prime(int n){ if(n==2) return true; if(n<2||n%2==0) return false; int j=3; while(j<=(int)sqrt(n)) { if(n%j==0) return false; j=j+2; } return true;}利用费马小定理,对于给定的整数n,取一个正...原创 2019-06-30 11:29:54 · 415 阅读 · 0 评论 -
利用欧几里得算法求整系数一次不定方程ax+by=c的解
以下大部分来自《ACM/ICPC程序设计与分析》已知:gcd(a,b) =gcd(b,a%b)求整数a和b的最大公约数的欧几里得算法。作辗转相除如下:{\text{求整数a和b的最大公约数的欧几里得算法。作辗转相除如下:}} 求整数a和b的最大公约数的欧几里得算法。作辗转相除如下:gcd(a,b)对应a=bq0+r1(r1<b){gcd(a,b)}\qquad \qquad {...原创 2019-05-05 20:10:05 · 1097 阅读 · 0 评论 -
中国剩余定理
dsafa原创 2019-06-21 21:23:48 · 109 阅读 · 0 评论 -
四个素数之和问题
题目描述:欧拉证明了素数有无穷多个这一经典数学理论。但是每个整数能表示成四个素数之和吗?希望你能帮我们高效地解决这一问题。在这个问题中,素数的定义为“一个素数是指一个正整数,且该正整数有且只有两个不同的因子”。例如37是一个素数,因为它只有两个不同的因子37和1。输入每行输入一个整数N(N<=10000000),这个数就是你需要把它表示成四个素数之和的数,输入0则表示结束。输出对...转载 2019-07-28 21:04:53 · 800 阅读 · 0 评论