博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AtCoder Regular Contest 060
阅读量:7195 次
发布时间:2019-06-29

本文共 1393 字,大约阅读时间需要 4 分钟。

C - 高橋君とカード / Tak and Cards

dp。记dp[i][j]为选了i张牌,和为j的方案数。

#include
#include
using namespace std;long long dp[55][2505], ans;int n, a, m;int main() { scanf("%d%d", &n, &a); dp[0][0] = 1; m = a * n; for (int t, i = 1; i <= n; ++i) { scanf("%d", &t); for (int j = i; j; --j) for (int k = m; k >= t; --k) dp[j][k] += dp[j-1][k-t]; } for (int i = 1; i <= n; ++i) ans += dp[i][i*a]; printf("%lld\n", ans); return 0;}

D - 桁和 / Digit Sum

这题很妙啊!

一句话题意:一个数N在b进制下表示为。记。现在告诉你,请你求出满足条件的最小的,如果这样的不存在,请输出-1。

分为两种情况讨论。

时:

直接枚举

时:

显然。又因为。所以

是已知的,只需要枚举的因数即可。

#include
#include
#include
using namespace std;typedef long long ll;ll s, n, m;ll f(ll b, ll n) { return n < b ? n : f(b, n / b) + n % b;}int main() { cin >> n >> s; m = sqrt(n) + 1; if (s > n) return puts("-1"), 0; if (s == n) return printf("%lld\n", s + 1), 0; for (ll i = 2; i <= m; ++i) if (f(i, n) == s) return printf("%lld\n", i), 0; ll b, q, res = 1e11; n -= s; for (ll p = 1; p * p <= n; ++p) { if (n % p == 0 ) { b = n / p + 1; q = s - p; if (q >= 0 && b >= 2 && q < b && p < b) res = min(res, b); } } printf("%lld\n", res == 1e11 ? -1 : res); return 0;}

 

转载于:https://www.cnblogs.com/p0ny/p/8072867.html

你可能感兴趣的文章
微软 Build 2017 开发者大会:Azure 与 AI 的快速发展
查看>>
11.2. Label
查看>>
31.3. Nginx
查看>>
20160331数据文件offline与open resetlogs3
查看>>
ThreadLocal可能引起的内存泄露(转)
查看>>
大咖 | 王汉生:从数据到价值的转化,回归分析的“道”与“术”
查看>>
无向图的最短路径算法JAVA实现(转)
查看>>
Cocos-2dx-Lua中使用Luaj的完整示例(转)
查看>>
1个掷硬币问题,4个Python解法:读书笔记
查看>>
Spring Cloud构建微服务架构(二)服务消费者
查看>>
解剖SQLSERVER 第十七篇 使用 OrcaMDF Corruptor 故意损坏数据库(译)
查看>>
Mysql学习笔记(十三)权限管理
查看>>
MySQL---数据库从入门走向大神系列(十六)-JavaWeb分页技术实例演示1
查看>>
【译】数据显示:中国的程序员是世界上最牛的程序员?
查看>>
[转]redmine与SVN的Https方式整合问题
查看>>
利用ArcMap对tiff或jpg格式地图图片的配准步骤
查看>>
微信小程序把玩(三十四)Audio API
查看>>
如何像NASA顶级程序员一样编程 —— 10条重要原则
查看>>
thrift中的超时(timeout)坑
查看>>
第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建
查看>>