B. Make it Divisible by 25
题意:

给你一串数字,能从中移除一些数字。问最少移除多少个数字,使得这串数字代表的数能被25整除。

思路

能被25整除的数,应该是以00、25、50、75结尾的数。在数字串中出现的形式应该如下: 应该记录:(从右往左数)
… 0 … 0 … : 第二个0, 第一个0
… 5 … 0 … : 第一个0, 0之后的第一个5
… 2 … 5 … : 第一个5, 5之后的第一个2
… 7 … 5 … : 第一个5, 5之后的第一个7

AC代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int t;
ll n;
int a[20];
int digit(ll i){int cnt = 0;for(int i = 0; i <= 20; i++) a[i] = 0;while(i){a[++cnt] = i % 10;i = i / 10;}reverse(a+1, a+1+cnt);return cnt;
}
int main(){cin >> t;while(t--){cin >> n;int num = digit(n);int first_0, second_0, first_5, second_5, second_7, second_2;first_0 = second_0 = first_5 = second_5 = second_7 = second_2 = 0;for(int i = num; i >= 1; i --) {//00 50 75 25//...0...0..//...5...0..//...7...5..//...2...5if(a[i] == 0 && (!first_0 || !second_0)){if(!first_0) first_0 = i;else second_0 = i;}else if(a[i] == 5){if(!first_5) first_5 = i;if(first_0 && !second_5) second_5 = i;}else if(a[i] == 7){if(first_5 && !second_7) second_7 = i;}else if(a[i] == 2){if(first_5 && !second_2) second_2 = i;}}int ans1, ans2, ans3, ans4, ans;ans1 = ans2 = ans3 = ans4 = 0x3f3f3f3f;if(first_0 && second_0) ans1 = num - first_0 + first_0 - second_0 - 1;if(first_0 && second_5) ans2 = num - first_0 + first_0 - second_5 - 1;if(first_5 && second_7) ans3 = num - first_5 + first_5 - second_7 - 1;if(first_5 && second_2) ans4 = num - first_5 + first_5 - second_2 - 1;ans = min(ans1, min(ans2, min(ans3, ans4)));cout << ans << endl;}
}

【Codeforces】 B. Make it Divisible by 25相关推荐

  1. 【Codeforces】Round #488 (Div. 2) 总结

    [Codeforces]Round #488 (Div. 2) 总结 比较僵硬的一场,还是手速不够,但是作为正式成为竞赛生的第一场比赛还是比较圆满的,起码没有FST,A掉ABCD,总排82,怒涨rat ...

  2. 【Codeforces】925A Stairs and Elevators【贪心】

    [Codeforces]925A Stairs and Elevators [题目大意] 在一个n*m的矩阵里,有clcl个楼梯和cece个电梯,电梯和楼梯可以到任意一层,给出clcl个楼梯的位置和c ...

  3. 【CodeForces】[546A]Soldier and Bananas

    直接运算 并没有什么弯 注意int就足以储存数据 不需要借钱时(n>res) 输出 0 #include<stdio.h> int main() {int k,n,w;while(s ...

  4. 【CodeForces】445B A Lot of Games 字典树博弈

    传送门:[CodeForces]445B  A Lot of Games 题目大意:两人一起构造一个串,每人每次向串的末尾放一个字母,必须保证放了这个字母后能够成所给的N个串的前缀,如果某个人不能放时 ...

  5. 【Codeforces】1080C Masha and two friends (棋盘染色)

    http://codeforces.com/problemset/problem/1080/C 给定一个棋盘,(1,1)的位置是白色,观察可以知道,如果横纵坐标之和是偶数,那么是白色,奇数的话就是黑色 ...

  6. 【Codeforces】【161Div2】

    [题目来源]http://www.codeforces.com/contest/263 [A. Beautiful Matrix] [解析]模拟即可.按照题目的意思,找到1所在的位置(x, y),然后 ...

  7. 【CodeForces】961 F. k-substrings 字符串哈希+二分

    [题目]F. k-substrings [题意]给定长度为n的串S,对于S的每个k-子串$s_ks_{k+1}...s_{n-k+1},k\in[1,\left \lceil \frac{n}{2} ...

  8. 【codeforces】【比赛题解】#940 CF Round #466 (Div. 2)

    人生的大起大落莫过如此,下一场我一定要回紫. [A]Points on the line 题意: 一个直线上有\(n\)个点,要求去掉最少的点,使得最远两点距离不超过\(d\). 题解: 暴力两重fo ...

  9. 【CodeForces】576 C. Points on Plane

    [题目]C. Points on Plane [题意]给定坐标系中n个点的坐标(范围[0,10^6]),求一种 [ 连边形成链后总长度<=2.5*10^9 ] 的方案.n<=10^6. [ ...

最新文章

  1. HashSet中的add()方法( 五 )(详尽版)
  2. 【分布式事务】面试官问我:MySQL中的XA事务崩溃了如何恢复??
  3. 关于现在人工智能预测的一些冷水
  4. Symfony2Book04:Doctrine03-对象关系映射(ORM)
  5. AC自动机-洛谷3121 [USACO15FEB]审查(黄金)Censoring (Gold)
  6. Python3 isspace()方法
  7. onvif规范的实现:server端Discovery实现,通过OnvifTestTool12.06测试
  8. 黑马程序员-Map集合
  9. postgresql编译安装及配置
  10. 开课吧Java课堂:如何通过接口引用实现接口?
  11. 已解决(Python语法报错)SyntaxError invalid syntax
  12. Datalogic得利捷推出物流应用领域全新标杆产品——AV900
  13. 管家婆 mysql_管家婆软件恢复账套数据图解-通过数据库源文件
  14. C# 重新启动计算机
  15. 关于数据的笑话 30 则
  16. update与upgrade的区别
  17. 食堂报餐点餐公司订餐微信小程序源码开发使用
  18. 比赛介绍评委的pp咋做_播音主持专业如何做自我介绍?
  19. 利用pandas进行数据分析
  20. hosts.ics或hosts权限修改、GitHub无法访问Windows下载问题

热门文章

  1. DevOps-5-看板
  2. 微信中H5通过uin_base64链接跳转公众号关注页面,关注按钮闪一下消失?
  3. 零基础全天自学PHP,7个月后我找到了工作
  4. 大型能源装备制造企业数字化转型实践----工业软件讲坛第八次讲座
  5. 全球首款iOS模拟器出炉!在违法的边缘疯狂试探
  6. Jetson nano安装Google拼音输入法
  7. RAKsmart:美国服务器租用对建站有哪些帮助?
  8. HCIA STP的端口状态与BPDU
  9. 摇一摇 周边 与 ibeacon
  10. 【转载】C语言嵌入式系统编程修炼之二:软件架构篇