数论 UVALive 2911

这道题是一道数论题。

题目的意思是告诉m、p、a、b,并且告诉你xi满足的两个条件。让你求出 xp1 + xp2 +...+ xpm 的最大值(其中p<=12,切p是偶数)。

这里需要对于xi所满足的两个条件做一下变换,就是在等式和不等式的两边同时乘上一个sqrt(a),这样在处理数据上会比较方便。

然后,我们分析,由于p是偶数,所以xi的p次方这样一个值一定是正数,那么要求出这道题目的答案就需要让所有xi尽量取绝度值大的数。也就是让xi尽量取sqrt(a),但是在规定范围内可能不能让所有xi都取sqrt(a),

那么,在sqrt(a)*b的值没有sqrt(a)大的时候,就让xi取1/sqrt(a),这样就可以对sqrt(a)*b进行“补充”,为后面的取值做准备。同时要注意的是最后一个数也就是xm的取值,因为它的取值受到sqrt(a)*b的限制,同时也受到前m-1个数取值的限制,所以当前m-1个数取值完毕后,xm的取值也就确定了。

#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
double m,p,a,b,temp,sum;
while(scanf("%lf%lf%lf%lf",&m,&p,&a,&b)!=EOF)
{
temp=a*b;
sum=0;
int i,b=0,s=0;
for(i=0;i<m-1;i++)
{
if(temp>=a)
{
temp-=a;
b++;
}
else
{
temp++;
s++;
}
}
sum+=s/(pow(sqrt(a),p));
sum+=b*(pow(sqrt(a),p));
sum+=pow(temp/(sqrt(a)),p);
printf("%d\n",(int)(sum+0.5));
}
}

时间: 2024-10-13 19:00:12

数论 UVALive 2911的相关文章

数论 UVALive 2756

这道题目考察的n个不同的数环形排列,每次相邻两个数交换位置,这样由正序转变成逆序所需操作的最小次数t. 公式:环形排列:t= n/2*(n/2 - 1)/2 + (n+1)/2* ((n+1)/2 - 1)/2 在这里在补充下线性排列的公式:t=n*(n-1)/2 #include<iostream>using namespace std;int main(){ int t; cin>>t; while(t--) { int n,ans; cin>>n; ans=(n/

数论 UVAlive 2889

这是一道考察回文数的题目,要求你输出第k个回文数.在做题的过程中,可以发现回文数的分布的规律:一位数:9个,二位数:9个,三位数:90个,四位数:90个,五位数:900个,六位数:900个……. #include<iostream>#include<cmath>#include<cstring>#include<cstdio>int main(){ int n; while(scanf("%d",&n)&&n) {

Gym 100299C &amp;&amp; UVaLive 6582 Magical GCD (暴力+数论)

题意:给出一个长度在 100 000 以内的正整数序列,大小不超过 10^ 12.求一个连续子序列,使得在所有的连续子序列中, 它们的GCD值乘以它们的长度最大. 析:暴力枚举右端点,然后在枚举左端点时,我们对gcd相同的只保留一个,那就是左端点最小的那个,只有这样才能保证是最大,然后删掉没用的. UVaLive上的数据有问题,比赛时怎么也交不过,后来去别的oj交就过了. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000&qu

uvalive 6396 数论 世界决赛的题

https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=589&problem=4407&mosmsg=Submission+received+with+ID+1528513 Factors The fundamental theorem of arithmetic states that every integer

UVa 12716 &amp;&amp; UVaLive 6657 GCD XOR (数论)

题意:给定一个 n ,让你求有多少对整数 (a, b) 1 <= b <= a 且 gcd(a, b) = a ^ b. 析:设 c = a ^ b 那么 c 就是 a 的约数,那么根据异或的性质 b = a ^ c,那么我们就可以枚举 a 和 c和素数筛选一样,加上gcd, n*logn*logn. 多写几个你会发现 c = a - b,证明如下: 首先 a - b <= a ^ b,且 a - b >= c,下面等于等号,用反证法,假设存在 a - b > c,那么 c

NKOJ1236 a^b (数论定理的应用)

          a^b 对于任意两个正整数a,b(0<=a,b<10000)计算a b各位数字的和的各位数字的和的各位数字的和的各位数字的和. Input 输入有多组数据,每组只有一行,包含两个正整数a,b.最后一组a=0,b=0表示输入结束,不需要处理. Output 对于每组输入数据,输出ab各位数字的和的各位数字的和的各位数字的和的各位数字的和. Sample Input 2 3 5 7 0 0 Sample Output 8 5 思路: 数论定理:任何数除以9的余数等于各位数的和除

CodeForces 396A 数论 组合数学

题目:http://codeforces.com/contest/396/problem/A 好久没做数论的东西了,一个获取素数的预处理跟素因子分解写错了,哭瞎了,呵呵, 首先ai最大值为10^9,n为500,最坏的情况 m最大值为500个10^9相乘,肯定不能获取m了,首选每一个ai肯定是m的一个因子,然后能分解就把ai给分解素因子,这样全部的ai都分解了  就能得到m的 所有素因子 以及 所有素因子的个数,题目求的 是n个因子的 不同序列的个数,所以每次 只能选出n个因子,这n个因子由素因子

UVALive 4848 Tour Belt

F - Tour Belt Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice UVALive 4848 Description Korea has many tourist attractions. One of them is an archipelago (Dadohae in Korean), a cluster of small islands sca

UVALive 6467 Strahler Order 拓扑排序

这题是今天下午BNU SUMMER TRAINING的C题 是队友给的解题思路,用拓扑排序然后就可以了 最后是3A 其中两次RE竟然是因为: scanf("%d",mm); ORZ 以后能用CIN还是CIN吧 QAQ 贴代码了: 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <math.h> 5 #include <iostre