[数]数学系列预习->补水题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除外).那么,现在最主要的问题是如何排序 ...
随机推荐
- Java ascii码值转为输出ascii码
Java ascii码值转为输出ascii码 public static void main(String[] args) { // TODO Auto-generated method stub S ...
- 《一些神奇的JS功效》
1: async 异步回调 (ES6) async function test(){ console.log("hello wolrd"); } test().then(funct ...
- 注解配置spring
1.为什么使用注解配置Spring基于注解配置的方式也已经逐渐代替xml.这个是不可逆的潮流,所以我们必须要掌握使用注解的方式配置Spring 总结:(1)使用注解配置Spring,注解的作用就是用于 ...
- 原生js移除或添加样式
样式效果如下,点击商品详情 添加样式active 代码 <!doctype html> <html lang="en"> <head> < ...
- kali网络配置
touch 1.txt#创建一个文件 配置网卡 auto eth0iface eth0 inet staticaddress 172.16.30.102#要设置的主机IP地址netmask 255.2 ...
- SQL Server Management Studio 执行超大脚本文件
SQL Server Management Studio 执行超大脚本文件 启动cmd.exe , cd 到C:\Program Files (x86)\Microsoft SQL Server\11 ...
- Ubuntu 下将 svg 图片转换为其他格式 (如 png)
参考 How to Convert SVG Files to other Image Formats on Ubuntu 12.04/11.10 Ubuntu 下将 svg 图片转换为其他格式 (如 ...
- Python装饰器的另类用法
之前有比较系统介绍过Python的装饰器(请查阅<详解Python装饰器>),本文算是一个补充.今天我们一起探讨一下装饰器的另类用法. 语法回顾 开始之前我们再将Python装饰器的语法回 ...
- 微信支付之App支付
项目接入微信支付的准备工作: 注册成为开发者,进行资质认证,这里是需要300元的审核费用的: 在微信商户平台创建应用,提交等待审核(大致需要5-7个工作日): 应用审核通过之后,进入应用,开通微信支付 ...
- 使用Spring MVC实现数据绑定
使用Spring MVC实现数据绑定 ——Spring MVC支持将表单参数自动绑定在映射方法的参数. ①绑定标量数据 前端代码: <form action="${pageContex ...