[数]数学系列预习->补水题ver.
---恢复内容开始---
话说要学反演了,contest一题都搞不定,整理题目暂且搁置,数学笨蛋来学一下数学_(:з」∠)_
---恢复内容结束---
是的,预习看了半天教学,没有整理,做题又都不会,我能怎么办呢_(:з」∠)_我只能补题了呀
HDU-3903 结论题,易证
首先由余弦定理,abc都是有理数所以cosA是有理数;然后由数学归纳法知cos nA也是有理数。cos(+)也可以化成一堆cos,所以分子是有理数。
对于分母,我们可以由sin2+cos2=1直接得到sin2=4a2b2-(a2+b2-c2)2,因为显然原本的分母4a2b2为有理数,就减少运算吧。
常用的判断无理数的方法:非完全平方数被开方,利用精度,通过sqrt后再平方判断是否在一定精度内相等来判断是否是完全平方数的开方,即是否为有理数。
拍下乱码,为了精度全部开成了long long(๑•̀ㅂ•́)و✧
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
long long a, b, c, m, n, k; int main()
{
int t;
cin >> t;
while (t--) {
cin >> a >> b >> c >> m >> n >> k;
long long p,q;
p = * a*a*b*b - (a*a + b * b - c * c)*(a*a + b * b - c * c);
q = sqrt(1.00*p);
if (q*q == p)cout << "YES" << endl;
else cout << "NO" << endl; }
return ;
}
HDU-3903
HDU-6069 一个数可以拆分为一些素数的次方的乘积,并且这个数的不同因子的个数为各个次方加一的乘积
意思是:n=p1a1p2a2……的不同因子个数为(a1+1)*(a2+1)……显然n的k次方会使(a*k+1)
数据略大,同时给了提示即R与L的差值,发现差值可以编号。
但是如果对每个i都查一遍表的话仍然会亡,“跳“”着来,即查一遍表,把符合条件的i都维护一遍,最后大家都获得了自己的因数_(:з」∠)_
感谢https://www.cnblogs.com/stepping/p/7357193.html题解,让我明白了上面一点。
//两三天后红小豆终于做出来这题,我不会告诉你t了多少次才找到那个假装自己是l的1,一度怀疑自己背的素数板子的速度(dying
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long ll;
const ll mod = ;
ll l, r, k;
ll p[];
bool isp[];
ll ans[], n[];
int co; void pri()
{
for (int i = ; i < ; i++)
isp[i] = ;
co = ;
for (int i = ; i < ; i++) {
if (isp[i])p[co++] = i;
for (int j = ; j < co&&i*p[j] < ; j++) {
isp[i*p[j]] = ;
if (i%p[j] == )break;
}
}
return;
} int main()
{
pri();
int t;
cin>>t;
while (t--) {
cin>>l>>r>>k;
for (int i = ; i <= r - l; i++) { ans[i] = ; n[i] = l + i; }
for (int i = ; i < co; i++) {
ll h = (l / p[i])*p[i];
if (h < l)h += p[i];
for (ll j = h; j <= r; j += p[i]) {
ll q = ;
while (n[j - l] % p[i] == ) {
n[j - l] /= p[i];
q++;
}
ans[j - l] = ans[j - l] * (q*k + ) % mod;
}
}
ll a = ;
for (int i = ; i <= r - l; i++) {
if (n[i] > )ans[i] = ans[i] * (k + ) % mod;
a = (a + ans[i]) % mod;
}
cout<<a<<endl;
}
return ;
}
HDU-6069
因为是自己又写了一遍,注意到了一些细节,比如作为起始点的h在循环j的时候也会用到,所以j要开longlong不然会re,最后那个循环放在一起纯属本人的连连看属性(没看上述题解的无视这条)owo。还有mod的时候*=和+最好不要用呢,会少mod的。最重要的一点是,有1无l,有l无1,切记切记_(:з」∠)_
HDU-5187 组合数 快速乘 快速幂
搜题解的时候看到状压dp是非常懵的,然后发现那是兄弟题。。。
快速乘快速幂我都懂,但是看不懂怎么就开始组合数求和了。。。总之manage to 理解了。
首先要知道(0,n)+(1,n)+...+(n,n)=2^n。小括号是组合数的一种表达方式嗯。
其次,这个东西可以这么理解:从n个数中选出0个数作为增序列(or减),剩下n个为减(or增)
从n个数中选出1个数作为增,剩下n-1个为减……以此类推
可以发现从0到n把全体序列单调增/减算了两次,所以最后再减2.(就是(1,n)和(n-1,n)的时候啦)(๑•̀ㅂ•́)و✧
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
typedef unsigned long long ull; ull mul(ull a, ull b,ull p)
{
ull ans = ;
while (b) {
if (b & ) { ans = (ans + a) % p; b--; }
a = (a + a) % p;
b >>= ;
}
return ans;
} ull pw(ull a, ull b,ull p)
{
ull ans = ;
while (b) {
if (b & ) { ans = mul(ans, a, p); b--; }
a = mul(a, a, p) ;
b >>= ;
}
return ans;
} int main()
{
ull n, p;
while (cin >> n >> p) {
if (n == ) {
if (p == )cout << << endl;
else cout << << endl;
continue;
}
cout << (pw(, n, p) - +p)%p << endl;
}
return ;
}
HDU-5187
看到1e18就是想开ull。快乘快幂里面的b--其实不是必须的,在最后移位(除以2)的时候自然会被弄掉。还有特判情况结束记得return或者continue。
重点是,有mod有减的时候,千万要,+mod再mod一次!!!
HDU-5019 gcd 分解因数
有个循环的i要开ll,别的没什么。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
ll f[];
int co; ll g(ll a, ll b)
{ return b == ? a : g(b, a%b); } void de(ll n)
{
co = ;
for (ll i = ; i*i <= n; i++)
if (n%i == ) {
f[co++] = i;
if (i*i != n)f[co++] = n / i;
}
return;
} int main()
{
int t;
ll x, y, k;
cin >> t;
while (t--) {
for (int i = ; i <= ; i++)f[i] = ;
cin >> x >> y >> k;
ll n;
n = g(x, y);
de(n);
if (k > co) { cout << - << endl; continue; }
sort(f, f + co);
cout << f[co - k] << endl;
}
return ;
}
HDU-5019
[数]数学系列预习->补水题ver.的更多相关文章
- MCM/ICM2018美国大学生数学建模大赛D题翻译
MCM/ICM2018美国大学生数学建模大赛D题翻译 2018年ICM问题D: 非使用汽油并在使用电力行驶的汽车(电量非空的) 由于环境和经济的原因,全球都在减少使用化石燃料,包括汽车汽油. 无论是受 ...
- 2018年中国研究生数学建模竞赛C题 二等奖 赛题论文
2018年中国研究生数学建模竞赛C题 对恐怖袭击事件记录数据的量化分析 恐怖袭击是指极端分子或组织人为制造的.针对但不仅限于平民及民用设施的.不符合国际道义的攻击行为,它不仅具有极大的杀伤性与破坏力, ...
- [动态规划]高数Umaru系列(9)——哈士奇(背包问题)
高数Umaru系列(9)——哈士奇 http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/3358.ht ...
- [数]补题ver.
上次补题好像把两次训练混在一起了,总之先按时间顺序补完这一次|ू・ω・` ) HDU-6301 不会的东西不能逃避.jpg 红小豆非常讨厌构造题,因为非常不会,并且非常逃避学习这类题,因为总也搞不清楚 ...
- 【LeetCode】数学(共106题)
[2]Add Two Numbers (2018年12月23日,review) 链表的高精度加法. 题解:链表专题:https://www.cnblogs.com/zhangwanying/p/979 ...
- 数的划分(NOIP2001&水题测试2017082401)
题目链接:数的划分 这题直接搜索就行了.给代码,思路没什么好讲的,要讲的放在代码后面: #include<bits/stdc++.h> using namespace std; int d ...
- BZOJ4408: [Fjoi 2016]神秘数【主席树好题】
Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = ...
- [luogu]P1066 2^k进制数[数学][递推][高精度]
[luogu]P1066 2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻 ...
- 丑数<数学技巧>
题意:丑数就是质因子只有2,3,5 ,7,的数,另外1也是丑数.求第n(1=<n<=5842)个丑数,n=0,结束. 思路:.3.5或者7的结果(1除外).那么,现在最主要的问题是如何排序 ...
随机推荐
- 创建局域网yum服务器
首先需要安装createrepo这个软件包,使用yum安装即可 创建软件库文件夹,比如mkdir -p /var/www/html/myrepo/x86_64, 将软件包拷贝到文件夹下. cd到该文件 ...
- harbor pull 失败
STep1: 显示下面的错误 Error response from daemon: unknown: The image is not signed in Notary Step2: 这儿暂时不要选 ...
- FL Studio中音频ASIO4ALL的设置
上期我们讲解了FL Studio中音频的相关设置,今天我们来进一步讲解音频设置中的ASIO4ALL的设置,FL Studio安装包括FL Studio ASIO和第三方ASIO驱动程序ASIO4ALL ...
- 【spotlight安装监控】
参考博客: https://www.cnblogs.com/ceshi2016/p/9012646.html http://blog.sina.com.cn/s/blog_1517220f20102x ...
- 将pip源设置为国内源的方法
需要将pip源设置为国内源,阿里源.豆瓣源.网易源等 - windows (1)打开文件资源管理器(文件夹地址栏中) (2)地址栏上面输入 %appdata% (3)在这里面新建一个文件夹 pip ( ...
- CentOS7攻克日记(四) —— 安装Mysql和Redis
这一篇主要安装mysql,redis等数据库 在这篇开始之前,有一个坑,上一篇更改python软连接的时候,尽量都用名字是python3来软连接/usr/../bin/python3.6,把名字是 ...
- GIT导出差异版本更新的文件列表
之前写了一篇SVN导出差异版本更新的文件列表 这次写git如何导出差异化版本文件列表 查找了一番,发现git diff这个命令 $ git diff 2da595c daea1d6 --name-on ...
- 4.3 thymeleaf模板引擎的使用
参考说明:以下笔记参考来自尚硅谷springboot教学中的笔记! thymeleaf官网docs: https://www.thymeleaf.org/documentation.html 模板引擎 ...
- How to view the DNS address assigned by DHCP
nmcli connection show clear-corporate | grep IP4 IP4.ADDRESS[1]: 101.8.112.9 ...
- oracle drop 表后 恢复
1.查看回收站中表 select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recy ...