[数]数学系列预习->补水题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除外).那么,现在最主要的问题是如何排序 ...
随机推荐
- Hadoop-Impala学习笔记之SQL参考
参考:Apache Impala Guide--Impala SQL Language Reference. Impala使用和Hive一样的元数据存储,Impala可以访问使用原生Impala CR ...
- C# 开发AliYun(阿里云) 小蜜调用接口代码
using System; using System.Collections.Generic; using Aliyun.Acs.Core; using Aliyun.Acs.Core.Excepti ...
- 小试wsl
安装 管理员权限运行powershell,执行如下命令: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Su ...
- 2019.04.10打卡(HTML)
代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...
- Oracle使用——数据泵导入导出数据库——impdp/expdp使用
使用前提 EXPDP和IMPDP只可以在Oracle服务端使用. EXP导出的文件只可以使用IMP导入,不适用于IMPDP导入文件:EXPDP导出的文件只可以使用IMPDP导入,而不适用于IMP导出文 ...
- Java基础学习-常量和变量
1.常量概述 -在程序执行的过程中,其值不可以发生改变的量. 2.常量的分类 -字符串常量 用双引号括起来的内容("HelloWorld") -整数常 ...
- Visual Studio 2017 和 Visual Assist X 番茄助手的安装教程
声明:本文所提供的所有软件均来自于互联网,仅供个人研究和学习使用,请勿用于商业用途,下载后请于24小时内删除,请支持正版! 一.Visual Studio 2017的安装教程 Visual Studi ...
- xml转json和实体类的两种方式
本文为博主原创,未经允许不得转载: xml在http通信中具有较高的安全性和传输速度,所以应用比较广泛, 在项目中往往需要对xml,json和实体类进行相互转换,在这里总结一下自己所用到的一些方法: ...
- 访问github慢的解决方案
问题描述 打开https://github.com很慢. 解决办法 1.打开文件C:\Windows\System32\drivers\etc\hosts 2.添加如下内容: 151.101.44.2 ...
- 【python 3】 集合方法操作汇总
基本数据类型 : set 集合(set)特点 : 无序 不能重复(自动去重) 用 {} 或 set()函数 来表示集合 空集合 : set() 1 name = {"江户部柯南", ...