ACM训练周末总结—11月19日

         这个半周我有所转变训练方式,除了刷题以外还针对性的对部分知识点学习,不知道这对我会不会有帮助。另外,下一周我要好好调整自己训练时间,晚上学习,写代码明显效率低。明天开始,晚上写代码最多写到23点,然后早上5点半起床,试验下,加油干。

         E - Perfect Pth Powers :给出一个数x,找出最大的p,使得存在一整数k,k^p=x。输出最大的p。

这道题其实分析一下假设存在一个数x=(p1^a1)(p2^a2)(p3^a3)...(pn^an),那么想要找到最大的数p,其实也就是a1,a2,...an的最大公倍数。但是注意这道题有个坑,输入的x有可能是负数,这是就要判断x正负,然后如果是正数就求出其相反数的a1,,,的最大公约数,如果求出是偶数,就不停的除以2,知道为奇数,因为一个数的偶数次方不可能是负数。

      K- Pseudoprime numbers:讲的是输入a,p。p如果是素数就不是为素数, 如果不是素数,判断(a^p)==a就是伪素数。其实就是快速幂和简单的判断下素数,水题。

     D - Street Numbers :其实还是水题一道,2*(x^2) = y^2+y找出10组满足该方程的解,直接打表手抄,输出就行了。

     T - Chinese remainder theorem again:还是水题,一个正整数N除以M1余(M1 - a),除以M2余(M2-a), 除以M3余(M3-a),总之, 除以MI余(MI-a),其中(a<Mi<100 i=1,2,…I),求满足条件的最小的数。其实就是找出M1,M2,M3,,,的最小公倍数,然后-a输出。

     G - Sumdiv  :给出A,B,找出A^B,所有自然因数之和。

     A=(p1^a1)(p2^a2)(p3^a3)...(pn^an)。A^B=(p1^(a1*B))(p2^(a2*b))...(pn^(an*B)),其实在纸上算算就知道当只有一个因子的时候为1+p1+p1^2+...pn^an。推出f[ n ]=(1+p1+p1^2+...)(1+p2+p2^2...)(1+pn+pn^2+...pn^(an*B))。

而这道题因为除法却不能使用等比公式的,所以我又学到了一种新公式。(求等比数列和)

现在推广到一般式。A1+A2+...+An。。。。。小本本
1) n为偶数: A1+A2+...+An = A1+A2+ ...+A(n/2)+ A(n/2)(A1+A2+...+A(n/2))
2) n为奇数: A1+A2+...+An = A1+A2+ ...+A(n/2)+ A(n/2)(A1+A2+...+A(n/2)) + An
推出来这些就可以递归求解了。

ll S(ll p,ll n)//关于递归二分求和的代码
{
if(n==0)return 1;
if(n&1)
{
return S(p,n/2)*(1+FaPow(p,n/2+1)%mod)%mod;
}
return (S(p,n/2-1)*(1+FaPow(p,n/2+1)%mod)%mod+FaPow(p,n/2)%mod)%mod;
}

       其实还没完全整理完,今天想了一天的Q题和刚刚水的V题就在我真正弄懂后下次整理下吧。

       其实是现在有点晚,困坏了,晚安。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值