AtCoder Regular Contest 113 题解

本文详细介绍了AtCoder Regular Contest 113的题目解法,涵盖动态规划、分治算法和数据结构的应用。通过枚举、数学计算和贪心策略解决A至D题,包括数位操作、字符串处理和排列组合问题。
摘要由CSDN通过智能技术生成

更好的阅读体验(逃

前言

难受,我还是一如既往的菜……

比赛链接

A

A ∗ B ∗ C A*B*C ABC

Des

给定一个正整数 K K K,求出正整数排列 ( A , B , C ) (A,B,C) (A,B,C),使 A × B × C ≤ K A×B×C ≤ K A×B×CK的组合个数。

Sol

就,枚举前两个元素 i i i, j j j,第三个元素的范围就是 [ 1 , K / i / j ] [1,K / i / j] [1,K/i/j], 所以直接加上个数 K / i / j K / i / j K/i/j 就好啦。

Code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define int long long
int k,n,ans;
signed main() {
   
	scanf("%lld",&k);
	for(int i = 1; i <= k; i ++) {
   
		n = k / i;
		for(int j = 1; j <= k / i; j ++) ans += n / j;
	}
	printf("%lld\n",ans);
	return 0;
} 
/*
样例输入1
2
样例输入2
10
样例输入3
31415
样例输出1
4
样例输出2
53
样例输出3
1937281
*/

B

A ^ B ^ C

Des

给定三个数 A A A, B B B, C C C,求出 A B C A^{B^C} ABC的个位上的数。

Sol

妈妈我会做小学奥数题了诶!!1(

应该有其他简单多了的算法,但是我懒。

众所周知,次方的个位数只能在 [ 1 , 9 ] [1,9] [19] 之间这不是废话吗迟早有一天它会出现循环节的。

所以直接考虑将循环节暴力搞出来并且在计算的时候把循环节记录下来,然后将循环节长度设为模数用快速幂算出 B C B^C BC ,最后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值