BestCoder Round #29——A--GTY's math problem(快速幂(对数法))、B--GTY's birthday gift(矩阵快速幂)
GTY's math problem
Time Limit: 1000/1000 MS
(Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 0 Accepted Submission(s): 0
Problem Description
GTY is a GodBull who will get an Au in
NOI . To have more time to learn algorithm knowledge, he never does his math
homework. His math teacher is very unhappy for that, but she can't do anything
because GTY can always get a good mark in math exams. One day, the math teacher
asked GTY to answer a question. There are four numbers on the blackboard - a,b,c,d. The math teacher wants GTY to compare ab with cd. Because GTY never does his homework,
he can't figure out this problem! If GTY can't answer this question correctly,
he will have to do his homework. So help him!
Input
Multi test cases (about 5000). Every
case contains four integers a,b,c,d(1≤a,b,c,d≤1000)separated by spaces. Please process to
the end of file.
Output
For each case , if ab>cd , print '>'. if ab<cd , print '<'. if ab=cd , print '='.
Sample Input
2 1 1 2
2 4 4 2
10 10 9 11
Sample Output
>
=
<
GTY's math problem
Time Limit: 1000/1000 MS
(Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1636 Accepted Submission(s): 298
问题描述
众所周知,GTY是一位神犇,为了更好的虐场,他从来不写数学作业而是去屠题,他的数学老师非常不爽,但由于GTY每次考试都AK,她也不能说什么,有一天老师在黑板上写了四个数——a,b,c,d 然后让GTY比较ab和cd的大小,由于GTY不屑于虐这道题,就把这个问题交给你了。
输入描述
多组数据(约5000组),每组数据包含4个整数a,b,c,d(1≤a,b,c,d≤1000),用空格隔开
输出描述
对于每组数据,若ab>cd,输出”>”, 若ab<cd,输出”<”, 若ab=cd,输出”=”
输入样例
2 1 1 2
2 4 4 2
10 10 9 11
输出样例
>
=
<
思路 log(a^b)=b∗log(a) 注意精度!
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
#define emp (1e-8)
int main()
{
double a,b,c,d;
while(scanf("%lf%lf%lf%lf",&a,&b,&c,&d)!=EOF)
{
if(fabs(b*log(a)-d*log(c))<=emp)
printf("=\n");
else if(b*log(a)>d*log(c))
printf(">\n");
else if(b*log(a)<d*log(c))
printf("<\n");
}
return ;
}
GTY's birthday gift
Time Limit: 2000/1000 MS
(Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 0 Accepted Submission(s): 0
Problem Description
FFZ's birthday is coming. GTY wants to
give a gift to ZZF. He asked his gay friends what he should give to ZZF. One of
them said, 'Nothing is more interesting than a number multiset.' So GTY decided
to make a multiset for ZZF. Multiset can contain elements with same values.
Because GTY wants to finish the gift as soon as possible, he will use JURUO
magic. It allows him to choose two numbers a and b(a,b∈S), and add a+b to the multiset. GTY can use the magic
for k times, and he wants the sum of the multiset is maximum, because the
larger the sum is, the happier FFZ will be. You need to help him calculate the
maximum sum of the multiset.
Input
Multi test cases (about 3) . The first
line contains two integers n and k (2≤n≤100000,1≤k≤1000000000). The second line contains n elements ai (1≤ai≤100000)separated by spaces , indicating the
multiset S .
Output
For each case , print the maximum sum of
the multiset (mod 10000007).
Sample Input
3 2
3 6 2
Sample Output
35
GTY's birthday gift
Time Limit: 2000/1000 MS
(Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 585 Accepted Submission(s): 103
问题描述
GTY的朋友ZZF的生日要来了,GTY问他的基友送什么礼物比较好,他的一个基友说送一个可重集吧!于是GTY找到了一个可重集S,GTY能使用神犇魔法k次,每次可以向可重集中加入一个数 a+b(a,b∈S),现在GTY想最大化可重集的和,这个工作就交给你了。
注:可重集是指可以包含多个相同元素的集合
输入描述
多组数据(约3组),每组数据的第一行有两个数n,k(2≤n≤100000,1≤k≤1000000000) 表示初始元素数量和可使用的魔法数,第二行包含n个数a(1≤ai≤100000)表示初始时可重集的元素
输出描述
对于每组数据,模10000007输出可重集可能的最大和。
输入样例
3 2
3 6 2
输出样例
35
这题是典型的矩阵快速幂:
这是公式:
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define LL __int64
#define mod 10000007 int N; struct matrix
{
LL m[][];
};
int a[]; matrix multiply(matrix x,matrix y)
{
matrix temp;
memset(temp.m,,sizeof(temp.m));
for(int i=; i<; i++)
{
for(int j=; j<; j++)
{
if(x.m[i][j]==) continue;
for(int k=; k<; k++)
{
if(y.m[j][k]==) continue;
temp.m[i][k]+=x.m[i][j]*y.m[j][k]%mod;
temp.m[i][k]%=mod;
}
}
}
return temp;
} matrix quickmod(matrix a,int n)
{
matrix res;//单位阵
memset(res.m,,sizeof(res.m));
for(int i=;i<;i++) res.m[i][i]=;
while(n)
{
if(n&)
res=multiply(res,a);
n>>=;
a=multiply(a,a);
}
/* for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
printf("%8d",res.m[i][j]);
printf("\n");
}
printf("\n");*/
return res;
}
int main()
{
int n,k;
while(scanf("%d%d",&n,&k)!=EOF)
{
LL sum=;
for(int i=;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
sort(a,a+n);
matrix ans;
ans.m[][]=;ans.m[][]=;ans.m[][]=;
ans.m[][]=;ans.m[][]=;ans.m[][]=;
ans.m[][]=;ans.m[][]=;ans.m[][]=;
ans=quickmod(ans,k); printf("%d\n",(ans.m[][]*sum+ans.m[][]*a[n-]+ans.m[][]*a[n-])%mod);
}
return ;
}
今天忘记报名BC了,只能现在做了。才做了2题!还要加油啊。
矩阵快速幂,还得谢谢庆神当初的传授啊。。。。哈哈!
BestCoder Round #29——A--GTY's math problem(快速幂(对数法))、B--GTY's birthday gift(矩阵快速幂)的更多相关文章
- HDU5171 GTY's birthday gift —— 矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-5171 GTY's birthday gift Time Limit: 2000/1000 MS (Java/Others) ...
- BC#29A:GTY's math problem(math) B:GTY's birthday gift(矩阵快速幂)
A: HDU5170 这题让比较a^b与c^d的大小.1<=a,b,c,d<=1000. 显然这题没法直接做,要利用对数来求,但是在math库中有关的对数函数返回的都是浮点数,所以这又要涉 ...
- HDU 5171 GTY's birthday gift 矩阵快速幂
GTY's birthday gift Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- BestCoder Round #29 1003 (hdu 5172) GTY's gay friends [线段树 判不同 预处理 好题]
传送门 GTY's gay friends Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- BestCoder Round #29 GTY's gay friends
#include <cstdio> #include <cstring> #include <vector> #include <algorithm> ...
- HDU 5170 GTY's math problem 水题
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5170 bc(中文):http://bestcoder.hdu.edu.cn/contests ...
- HDU 5170 GTY's math problem
数学题,a的b次方和c的d次方都很大,直接判断是做不出来的. 如果我们能找到一个函数F(x)是单调的,而F(X)的值又比较好算,那么可以通过比较F(X)的大小来判断自变量的大小. 令F(X)=log( ...
- hdu 5170 GTY's math problem(水,,数学,,)
题意: 给a,b,c,d. 比较a^b和c^d的大小 思路: 比较log(a^b)和log(c^d)的大小 代码: int a,b,c,d; int main(){ while(scanf(" ...
- BestCoder Round #70 Jam's math problem(hdu 5615)
Problem Description Jam has a math problem. He just learned factorization. He is trying to factorize ...
随机推荐
- jQuery的addClass,removeClass和toggleClass方法
jQuery的addClass,removeClass和toggleClass方法,最后一个方法在某一情形之下,可以替代前面2个方法. 第一个方法addClass为元素添加一个class. 第二个方法 ...
- 微服务统一登陆认证怎么做?JWT ?
无状态登录原理 1.1.什么是有状态? 有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session. 例如登录:用户登 ...
- 小猴打架(luogu4430)(数论+生成树计数)
一开始森林里面有\(N\)只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过\(N-1\)次打架之后,整个森林的小猴 ...
- 牛客第二场 C.message(计算几何+二分)
题目传送:https://www.nowcoder.com/acm/contest/140/C 题意:有n个云层,每个云层可以表示为y=ax+b.每个飞机的航线可以表示为时间x时,坐标为(x,cx+d ...
- spring cloud学习(四) 动态路由
Zuul的主要功能是路由和过滤器.路由功能是微服务的一部分,zuul实现了负载均衡. 1.1 新建模块zuul pom.xml <?xml version="1.0" enc ...
- Redis---Hash(字典)
1. 概述 Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿). ...
- 提取PPT中的原始图片
写Word的不如做Excel 的,做Excel不如做PPT的,写代码的不如做PPT. 为了在电子邮件中上传PPT,其中的图片大都经过压缩,以便缩小PPT的体积.那么如何将PPT中的图片,还原成没有经过 ...
- 11-02 Java Object类使用详解
Object 作为超类 Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类. Object类的构造方法有一个,并且是无参构造,这其实就是理解当时我们说过,子类构造方法默认访 ...
- C# 多线程七之Parallel
1.简介 关于Parallel不想说太多,因为它是Task的语法糖,至少我是这么理解的,官方文档也是这么说的,它本身就是基本Task的.假设我们有一个集合,不管是什么集合,我们要遍历它,首先想到的是F ...
- IIS 站点部署多级域名
当站点的规模达到一定程度,往往会对业务进行拆分,部署到一台服务器的不同站点,,而一个域名(顶级域名)只能绑定一个站点(核心站点),这个时候就通过给顶级域名创建子域名的方式(理论上一个顶级域名可以绑定5 ...