数论
文章平均质量分 55
AC_XXZ
努力了不一定会成功,但不努力肯定会失败
展开
-
hdu1212(大数取模)
#include #include #include #include using namespace std;int mod(char *a,int num){ int len = strlen(a); int number[2000]; for(int i = 0 ; i< len ; i++) { number[i] = a[i]原创 2014-05-13 20:59:32 · 1157 阅读 · 0 评论 -
2015年多校联合训练第四场(Problem Killer)hdu5328
题意: 求最大等差或等比数列的长度 思路: 开始用二分,WA暴了,后来发现我用的等差数列公式有问题 (a[i]+a[j])*(j-i+1)/2,等差数列一定满足这个公式,但满足这个公式的不一定是等差数列,我sb了。。。。。 还有就算等比数列a[i+1]/a[i] == a[i]/a[i-1],也是sb了,这个会引起精度丢失,应该a[i]^2 = a[i-1]*a[i+1]; ……. 正原创 2015-07-31 21:03:42 · 760 阅读 · 0 评论 -
2015年多校联合训练第三场RGCDQ(hdu5317)
题意: f(i)代表i数中有的素数的种数,给出区间[l,r],求区间内max(gcd(f(i))), 由于i最大是1e6,2*3*5*7*11*13*17>1e6,故最多不超过7种素数, 先打表打出1e6内的素数种数表,然后用sum[i][j]代表1-i个数中,还有j个素数的个数,最后用sum[r][j] - sum[l-1][j]求出区间内含有j个素数的数的个数,暴力找出1,2,3,4,5,原创 2015-07-31 13:42:37 · 942 阅读 · 0 评论 -
UVA 10515(求m^n的个位数)
题意:给出两个正整数m,n(0思路:找规律,对于m的话只需考虑个位数就行,个位数不会因相乘的进位而发生变化,对于指数n打表发现2,3,7,8都是以每四个连续次方一个循环,4和9以2为循环所以取m的最后一位k,n取最后两位d(判断正整数能否整除4取最后两位就行,很好证明),m^n的的最后一位数字为:ans = (k^p)%10p = d%4 == 0 ? 4 : d%4;#原创 2015-06-25 20:39:12 · 1124 阅读 · 0 评论 -
高精度加法,乘法,阶乘
#include #include #include #include using namespace std; string str1,str2;/***********乘法***********/void chenfa(){ int a[20000],b[20000],c[50000]; int len1 = str1.length(); int le原创 2014-06-12 22:19:02 · 834 阅读 · 0 评论 -
HLJOJ1171(大素数判定)
多组测试数据,每组测试数据第一行输入一个正整数n(0每组测试数据,若n为素数,那么输出“YES”,否则输出“NO”。(引号不输出)思路:由于n非常的大,打表nlogn也不行,我们换一种思路,我们不打10^9,我们只打出它的开平方10^5就差不多了,找出小于10^5以内的素数,然后我们判定n的时候再用普通素数判别法判定就行#include #include #in原创 2015-03-17 07:43:30 · 862 阅读 · 0 评论 -
筛法打表
有时候题目给的数据特别大,但是需要求素数的时候,应该用筛选法求素数,同理也可用筛选法求因子和原创 2014-06-19 17:45:19 · 1007 阅读 · 0 评论 -
大数取模
a+b)%n=(a%n+b%n)%n(a-b)%n=(a%n-b%n+n)%n为什么要加n,由于a%n可能小于b%n,所以加n保证为正整数a*b%n=(a%n*b%n)%n这些事大整数取模的基础int mod(char str[],int num){ int number[10转载 2014-11-26 16:44:34 · 970 阅读 · 0 评论 -
Codeforces Round #272 (Div. 2)
A. Dreamoon and Stairstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputDreamoon wants to climb up a stair of原创 2014-10-19 16:35:01 · 1652 阅读 · 0 评论 -
数学题(1)
I.Sum of One-sequenceTime Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 168(45 users)Total Accepted: 38(35 users)Special Judge: NoDescription原创 2014-10-05 16:22:30 · 902 阅读 · 0 评论 -
最小的n个和(STL堆的运用)
最小的n个和Time Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 109(26 users)Total Accepted: 22(19 users)Rating: Special Judge: NoDescription给定A原创 2014-11-03 20:59:20 · 1404 阅读 · 0 评论 -
数学题(2)——求数学期望
F.Kevin and Expected ValueTime Limit: 1000 MSMemory Limit: 65536 KTotal Submit: 70(26 users)Total Accepted: 25(24 users)Special Judge: NoDescripti原创 2014-10-05 16:35:35 · 1681 阅读 · 0 评论 -
高精度计算----减法运算
处理大数减法运算:1、首先要判断被减数与减数哪个更大,再相应的带入减法函数去处理。具体的比较可以使用字符串的相关知识去比较。2、相减要先对齐数组,依照减数的长度,执行相应的减法运算次数。3、不需要借位相减的话,直接减去;需要的话,向前借一位,若前一位是0,则再前借(此时前一位的0变为10)。测试程序效果如下: 以下代码包括相减函数,比较被减数减数函数,若有错误,请指出:转载 2014-08-13 14:48:31 · 807 阅读 · 0 评论 -
高精度除法
算法思想:反复做减法,看看从被除数里最多能减去多少个除数,商就是多少;所以算法核心是写一个大整数的减法函数;反复调用该函数进行减法操作;算法步骤:用数组a表示被除数,数组b表示除数,数组res表示商;先用被除数a减去除数b得到差的位数k,同时商+1;再用被除数a减去若干个除数b*(10^k);不够减了,再减去若干个除数b*(10^(k-1))...b*(10^(k-2))...;一直减到不够减为止转载 2014-08-13 14:53:04 · 671 阅读 · 0 评论 -
2015年多校联合训练第四场(Olympiad)hdu5327
题意:找区间美丽数(自身有不同数字组成的数,如123是,100不是)的个数 思路:打表#include <bits/stdc++.h>#define LL long longusing namespace std;int a[1001005];int n;int f[100005];int sum[100005];int flag[10];void init(){ for(原创 2015-07-31 20:53:36 · 900 阅读 · 0 评论