[Beijing wc2012]算不出的算式题解

题目

思路

大数据模拟:

q/p13579
1 0 \color{red}{0} 00000
30 2 \color{red}{2} 2234
502 6 \color{red}{6} 668
7036 12 \color{red}{12} 1212
904812 20 \color{red}{20} 20

红 色 字 \color{red}{红色字} 是q=p;

  • 可以很明显的看出

当p ≠ \not= =q时

∑ k = 1 p − 1 2 [ k q p ] + ∑ l = 1 q − 1 2 [ l p q ] = q − 1 2 ∗ p − 1 2 = ( q − 1 ) ( p − 1 ) 4 \sum_{k=1}^\frac{p-1}{2} [\frac {kq}{p} ]+\sum_{l=1}^\frac{q-1}{2} [\frac {lp}{q} ]=\frac{q-1}{2}* \frac{p-1}{2}=\frac{(q-1)(p-1)}{4} k=12p1[pkq]+l=12q1[qlp]=2q12p1=4(q1)(p1)

	printf("%lld\n",((p-1)*(q-1)/4));		

当p = = =q时

∑ k = 1 p − 1 2 [ k q p ] + ∑ l = 1 q − 1 2 [ l p q ] = ( q − 1 ) ( p − 1 ) 4 + q ( 或 p ) − 1 2 \sum_{k=1}^\frac{p-1}{2} [\frac {kq}{p} ]+\sum_{l=1}^\frac{q-1}{2} [\frac {lp}{q} ]=\frac{(q-1)(p-1)}{4}+\frac{q(或p)-1}{2} k=12p1[pkq]+l=12q1[qlp]=4(q1)(p1)+2q(p)1

	printf("%lld\n",((p-1)*(q-1)/4)+(q-1)/2));			
  • 合并大法
	printf("%lld\n",((p-1)*(q-1)/4)+(q==p?(q-1)/2:0));	

完整代码

#include<bits/stdc++.h>
long long q,p;
int main() {
	scanf("%lld%lld",&p,&q);
	printf("%lld\n",((p-1)*(q-1)/4)+(q==p?(q-1)/2:0));
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值