[数]数学系列预习->补水题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除外).那么,现在最主要的问题是如何排序 ...
随机推荐
- bzoj 1283 序列 - 费用流
题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求选出一些数使得原序列中每$m$个连续的数中不超过$K$个被选走.问最大的可能的和. 感觉建图好妙啊.. 考虑把问题转化成选$m$次数,每次 ...
- 读Vue源码二 (响应式对象)
vue在init的时候会执行observer方法,如果value是对象就直接返回,如果对象上没有定义过_ob_这个属性,就 new Observer实例 export function observe ...
- Django模板语言
day66 2018-05-08 1. 内容回顾 1. 模板系统(字符串替换) 1. 语法 1. 变量相关: {{ name }},{{name|length}},{{name|default:&qu ...
- java中的构造器
构造器是什么 1.构造器,也称构造方法.构造函数.作用是构造出来一个类的实例,确保对象得到初始化. 2.构造器的格式: 权限修饰符 类名(无参/有参){}. 3.根据有无参数,可分为无参构造 和有参构 ...
- HDU 4417 Super Mario(主席树 区间不超过k的个数)题解
题意:问区间内不超过k的个数 思路:显然主席树,把所有的值离散化一下,然后主席树求一下小于等于k有几个就行.注意,他给你的k不一定包含在数组里,所以问题中的询问一起离散化. 代码: #include& ...
- easyUI combobox使用方法总结
combobox,中文叫复合框,是把文本框和列表框的特性结合起来的一种控件,这个控件,既可以输入文字,也可以像列表框一样选择选项 Combobox用法和方法参数: 1. 需要引入class=" ...
- 处理npm publish报错问题
上传项目到npm-->为社会做贡献 首先你得有一个项目 npm init 生成package.json 来设置相信息 注册登录npm:npm adduser 输入你的一些信息 查看当前npm登录 ...
- 封装json输出
/** * 输出json * @param $msg * @param int $errno */ protected function printOutError($msg,$errno = 100 ...
- vue试题
1.v-for可是实现数据遍历显示,不仅可以遍历数组,也可以遍历对象,还可以从数值中取值. 2.vue的生命周期钩子 1)实例,组件通过new Vue()创建出来之后会初始化事件和生命周期,然后就会执 ...
- Java分布式锁看这篇就够了
### 什么是锁? 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量. 而同步的本质是通过锁来实现的 ...