【Foreign】tty的方程math [数学]
tty的方程math
Time Limit: 50 Sec Memory Limit: 128 MB
Description
给定n、m、k、p。
a+b+c=n, a^2+b^2+c^2=m, a^3+b^3+c^3=k。
求a^p+b^p+c^p。
Input
输入n、m、k、p
Output
以A/B形式表示答案。
Sample Input
5 7 11 4
Sample Output
27/1
HINT
0<=n,m,k <=20,0<=p<=10
Solution
\begin {align}
&a^p+b^p+c^p\:\:①
\\
\\&(a+b+c)*(a^{p-1}+b^{p-1}+c^{p-1})\:\:②
\\=&a^{p}+b^{p}+c^{p}+ab^{p-1}+ac^{p-1}+ba^{p-1}+bc^{p-1}+ca^{p-1}+cb^{p-1}
\\
\\∴&①-②
\\=&-(ab^{p-1}+ac^{p-1}+ba^{p-1}+bc^{p-1}+ca^{p-1}+cb^{p-1})
\\
\\&(ab+bc+ac)*(a^{p-2}+b^{p-2}+c^{p-2})\:\:③
\\=&ba^{p-1}+ab^{p-1}+abc^{p-2}+bca^{p-2}+cb^{p-1}+bc^{p-1}+ca^{p-1}+acb^{p-1}+ac^{p-1}
\\
\\∴&①-②+③=
\\=&bca^{p-2}+acb^{p-2}+abc^{p-2}
\\=&abc(a^{p-3}+b^{p-3}+c^{p-3})\:\:④
\\
\\∴&①-②+③=④即①=②-③+④
\\
\\&那么现在问题就是如何求出(a+b+c),(ab+ac+bc),(abc)。
\\&首先题目给定了a+b+c=n,a^2+b^2+c^2=m,a^3+b^3+c^3=k,那么:
\\
\\1.&a+b+c=n
\\2.&(a+b+c)^2=a^2+b^2+c^2+2ab+2ac+2bc
\\&ab+ac+bc=\frac{n^2-m}2
\\3.&(a+b+c)^3=a^3+b^3+c^3+3a^2b+3ab^2+3a^2c+3ac^2+3b^2c+3bc^2+6abc.
\\&a^2b+ab^2+a^2c+ac^2+b^2c+bc^2=(ab+ac+bc)*(a+b+c)-3abc
\\&n^3=k+3* \frac{(n^2-m) * n}2-9abc+6abc
\\&abc=\frac{2*k+3n*(n^2-m)-2*n^3}{6}
\end {align}
math

Code
#include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
using namespace std;
typedef long long s64; const int ONE = ;
const int MOD = 1e9 + ; int get()
{
int res = , Q = ; char c;
while( (c = getchar()) < || c > )
if(c == '-') Q = -;
if(Q) res = c - ;
while( (c = getchar()) >= && c <= )
res = res * + c - ;
return res * Q;
} s64 gcd(s64 a, s64 b)
{
while(s64 r = a % b) {a = b; b = r;}
return b;
} int n, m, k, p;
struct power
{
s64 fz, fm;
}Ans[ONE], A, B, C, now; power Deal(power a, power b)
{
s64 fz = a.fz * b.fm + b.fz * a.fm, fm = a.fm * b.fm;
int p1 = fz > , p2 = fm > ;
fz = abs(fz), fm = abs(fm);
s64 r = gcd(fz, fm);
return (power){p1 * fz / r, p2 * fm / r};
} int main()
{
cin >> n >> m >> k >> p;
if(p == ) {printf(""); return ;}
Ans[] = (power){n, };
Ans[] = (power){m, };
Ans[] = (power){k, }; A = (power){n, };
B = (power){n * n - m, };
C = (power){ * k + * n * (n * n - m) - * n * n * n, }; for(int i = ; i <= p; i++)
{
power now = (power){A.fz * Ans[i-].fz, A.fm * Ans[i-].fm};
now = Deal(now, (power){C.fz * Ans[i-].fz, C.fm * Ans[i-].fm});
now = Deal(now, (power){-B.fz * Ans[i-].fz, B.fm * Ans[i-].fm}); Ans[i] = now;
} printf("%d/%d", Ans[p].fz, Ans[p].fm);
}
【Foreign】tty的方程math [数学]的更多相关文章
- JS之路——Math数学对象
Math数学对象 ceil(数值)大于或等于该数的最小整数 floor(数值)小于或等于该数的最大整数 min(数值1,数值2)返回最小值 max(数值1,数值2)返回最大值 pow(数值1,数值2) ...
- 常用类--Date日期类,SimpleDateFormat日期格式类,Calendar日历类,Math数学工具类,Random随机数类
Date日期类 Date表示特定的时间,精确到毫秒; 构造方法: public Data() public Date(long date) 常用方法: public long getTime() pu ...
- Lua的函数的定义、math数学函数、lua字符串的处理、lua支持的字符串类、模式串中的特殊字符_学习笔记04
Lua的函数的定义.math数学函数 定义函数 function [function name] (param1,param2) [function code] --定义一个函数用来求的两个数字的和 ...
- day14-Python运维开发基础(内置函数、pickle序列化模块、math数学模块)
1. 内置函数 # ### 内置函数 # abs 绝对值函数 res = abs(-10) print(res) # round 四舍五入 (n.5 n为偶数则舍去 n.5 n为奇数,则进一!) 奇进 ...
- Math 数学类
/* Math 数学类, 主要是提供了很多的数学公式. abs(double a) 获取绝对值 ceil(double a) 向上取整 floor(double a) 向下取整 round(float ...
- 四 js Math数学简单使用
//Math是全局的 //Math.PI 数学里的3.1415926.... console.log(Math.PI); //取随机数 //js提供的随机函数 Math.random() --> ...
- java Math数学工具及Random随机函数
Math类包含用于执行基本数学运算的方法,如绝对值.对数.平方根和三角函数.它是一个final类,其中定义的都是一些常量和静 态方法.常用方法如下:public static double sqrt( ...
- hdu-5675 ztr loves math(数学)
题目链接: ztr loves math Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- 21.1 Math(数学运算)方法使用 、工具类
package day21_static.meathDemo; //Math: 包含一些基本的数学运算方法 //从api中搜Math,它都用的static修饰. public class MethDe ...
随机推荐
- 软工网络15团队作业8——Beta阶段敏捷冲刺(Day5)
提供当天站立式会议照片一张 每个人的工作 1.讨论项目每个成员的昨天进展 赵铭: 进一步数据整理,写入数据库. 吴慧婷:主页面.查单词页面的改进.背单词界面改进. 陈敏: 单词学习功能及该界面按钮功能 ...
- HDU 2078 复习时间
http://acm.hdu.edu.cn/showproblem.php?pid=2078 Problem Description 为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑.xh ...
- java 自定义异常的回顾
一.异常的分类: 1.编译时异常:编译时被检测的异常 (throw后,方法有能力处理就try-catch处理,没能力处理就必须throws).编译不通过,检查语法(其实就是throw和throws的配 ...
- git使用教程推荐
Git使用教程 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是 ...
- [转帖] Linux buffer 和 cache相关内容
Linux中Buffer/Cache清理 Lentil2018年9月6日 Linux中的buff/cache可以被手动释放,释放缓存的代码如下: https://lentil1016.cn/linux ...
- ACM数论之旅16---母函数(又名生成函数)(痛并快乐着(╭ ̄3 ̄)╭)
(前排出售零食瓜子) 前言: 母函数是个很难的东西,难在数学 而ACM中所用的母函数只是母函数的基础 应该说除了不好理解外,其他都是非常简单的 母函数即生成函数,是组合数学中尤其是计数方面的一个重要理 ...
- 多进程编程之守护进程Daemonize
1.守护进程 守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务.很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭.另一些只在需要的时候才启动,完成任务后就自动结束. ...
- 每日一问(常用的集合接口和类有哪些【二】)—ArrayList类和数组之间的转换
ArrayList的实质是数组,但是在类的实例中所存储的数组是无法访问的,因此实际上是无法直接作为数组使用,那么如何将这两者进行转化呢? Collection接口定义了toArray的方法,可将实现该 ...
- [BZOJ4556][Tjoi2016&Heoi2016]字符串 后缀数组+主席树
4556: [Tjoi2016&Heoi2016]字符串 Time Limit: 20 Sec Memory Limit: 128 MB Description 佳媛姐姐过生日的时候,她的小 ...
- PE文件解析 基础篇
PE文件解析 基础篇 来源 https://bbs.pediy.com/thread-247114.htm 前言 之前学习了PE格式,为了更好的理解,决定写一个类似LoadPE的小工具. 编译器是VS ...