A. Alyona and Numbers(CF ROUND 358 DIV2)
A. Alyona and Numbers
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
After finishing eating her bun, Alyona came up with two integers n and m. She decided to write down two columns of integers — the first column containing integers from 1 to n and the second containing integers from 1 to m. Now the girl wants to count how many pairs of integers she can choose, one from the first column and the other from the second column, such that their sum is divisible by 5.
Formally, Alyona wants to count the number of pairs of integers (x, y) such that 1 ≤ x ≤ n, 1 ≤ y ≤ m and equals 0.
As usual, Alyona has some troubles and asks you to help.
Input
The only line of the input contains two integers n and m (1 ≤ n, m ≤ 1 000 000).
Output
Print the only integer — the number of pairs of integers (x, y) such that 1 ≤ x ≤ n, 1 ≤ y ≤ m and (x + y) is divisible by 5.
Examples
input
6 12
output
14
input
11 14
output
31
input
1 5
output
1
input
3 8
output
5
input
5 7
output
7
input
21 21
output
88
Note
Following pairs are suitable in the first sample case:
for x = 1 fits y equal to 4 or 9;
for x = 2 fits y equal to 3 or 8;
for x = 3 fits y equal to 2, 7 or 12;
for x = 4 fits y equal to 1, 6 or 11;
for x = 5 fits y equal to 5 or 10;
for x = 6 fits y equal to 4 or 9.
Only the pair (1, 4) is suitable in the third sample case.
题目链接:http://codeforces.com/contest/682/problem/A
题意: 给你n和m个数,让你从1 - n 和 1-m 中分别取一个数,组成一个数对,求有多少个数对和为5的倍数。
因为今天一天连续好几个A题都是一路暴力过的,所以这道题想也没想,写了个O(n^2)的算法,TLE了,一开始看错n m取值范围,以为合理优化暴力还是能过的,仔细一看发现必须换方法了。
于是想办法用一层循环做,
想了半天想出一个最蠢的打表……
#include<iostream> using namespace std; void swap( int &a , int &b) { int temp; temp=a; a=b; b=temp; return ; } int main() { int n,m; cin >> n >> m ; long long int ans = 0 ; if( n > m) swap(n,m); int unit = m % 10 ; for ( int i = 1 ; i <=n ; i++) { if( i % 10 == 1 ) ans+=( ( unit >= 4 ) ? 1 : 0 ) + ( ( unit >=9 ) ? 1 : 0 ) + 2* (m / 10 ); if( i % 10 == 2 ) ans+=( ( unit >= 3 ) ? 1 : 0 ) + ( ( unit >=8 ) ? 1 : 0 ) + 2*(m / 10) ; if( i % 10 == 3 ) ans+=( ( unit >= 2 ) ? 1 : 0 ) + ( ( unit >=7 ) ? 1 : 0 ) + 2*(m / 10) ; if( i % 10 == 4 ) ans+=( ( unit >= 1 ) ? 1 : 0 ) + ( ( unit >=6 ) ? 1 : 0 ) + 2*(m / 10 ); if( i % 10 == 5 ) ans+= ( ( unit >=5 ) ? 1 : 0 ) + 2*( m / 10 ) ; if( i % 10 == 6 ) ans+=( ( unit >= 4 ) ? 1 : 0 ) + ( ( unit >=9 ) ? 1 : 0 ) + 2* ( m / 10 ); if( i % 10 == 7 ) ans+=( ( unit >= 3 ) ? 1 : 0 ) + ( ( unit >=8 ) ? 1 : 0 ) + 2*(m / 10 ); if( i % 10 == 8 ) ans+=( ( unit >= 2 ) ? 1 : 0 ) + ( ( unit >=7 ) ? 1 : 0 ) + 2*(m / 10 ); if( i % 10 == 9 ) ans+=( ( unit >= 1 ) ? 1 : 0 ) + ( ( unit >= 6 ) ? 1 : 0) + 2*(m / 10 ) ; if( i % 10 == 0 ) ans+=( ( unit >= 5 ) ? 1 : 0 ) + 2 * (m / 10) ; } cout << ans << endl ; return 0 ; }
然后觉得这样写太蠢了,而且我还因为运算优先级问
题WA了好几次就更蠢了(比如m / 2 没加括号,对于m > 5 且 m < 9的情况会有问题),于是搜了一下别人的题解
发现这样一个写法,代码如下:
#include<iostream> using namespace std; int main() { int n , m ; long long int ans = 0 ; cin >> n >> m; for( int i = 1 ; i <= n ; i++) { ans+= ( i + m ) / 5 - i / 5 ; } cout << ans << endl ; return 0 ; }
原理: 对于第i个数,只要看他和m相加之后有多少个5的倍数就是答案,需要注意的是如果i本身大于5,需要减去那一部分,如i=15的时候,5的倍数 5 10 1 5 这三个数就不能考虑了……
自己好蠢。
A. Alyona and Numbers(CF ROUND 358 DIV2)的更多相关文章
- CF Round #580(div2)题解报告
CF Round #580(div2)题解报告 T1 T2 水题,不管 T3 构造题,证明大约感性理解一下 我们想既然存在解 \(|a[n + i] - a[i]| = 1\) 这是必须要满足的 既然 ...
- CF round #622 (div2)
CF Round 622 div2 A.简单模拟 B.数学 题意: 某人A参加一个比赛,共n人参加,有两轮,给定这两轮的名次x,y,总排名记为两轮排名和x+y,此值越小名次越前,并且对于与A同分者而言 ...
- [CF Round #295 div2] C. DNA Alignment 【观察与思考0.0】
题目链接:C. DNA Alignment 题目大意就不写了,因为叙述会比较麻烦..还是直接看英文题面吧. 题目分析 经过观察与思考,可以发现,构造的串 T 的每一个字符都与给定串 S 的每一个字符匹 ...
- [CF Round #294 div2] E. A and B and Lecture Rooms 【树上倍增】
题目链接:E. A and B and Lecture Rooms 题目大意 给定一颗节点数10^5的树,有10^5个询问,每次询问树上到xi, yi这两个点距离相等的点有多少个. 题目分析 若 x= ...
- [CF Round #294 div2] D. A and B and Interesting Substrings 【Map】
题目链接:D. A and B and Interesting Substrings 题目大意 给定26个小写字母的权值,一共26个整数(有正有负). 给定一个小写字母组成的字符串(长度10^5),求 ...
- A. Grasshopper And the String(CF ROUND 378 DIV2)
A. Grasshopper And the String time limit per test 1 second memory limit per test 256 megabytes input ...
- CF Round#436 div2
额,这次的题目其实挺智障的.所以通过这次比赛,我也发现了自己是一个智障.... 不说太多,说多是泪... A. Fair Game 题意:给你一个数组,看你能否把它均分为两个所有元素均相同的子数组. ...
- CF Round #569 Div2(contest1180)
比赛链接:http://codeforces.com/contest/1180 Problem A 题意:给出n,问方块数.看图理解... Solution: 找一找规律就可以了,发现方块数为2n*( ...
- CF Round #687 Div2 简要题解
题面 A 可以发现,最远的几个人一定是 \((1, 1), (1, m), (n, 1), (n, m)\) 中的一个,直接计算即可. B 注意到颜色数量很少,直接暴力枚举最终的颜色后模拟即可. C ...
随机推荐
- 我是实践派之mongo的一主多从
mongo一主多从 为什么要做一主多从? mongodb天生就是为了分布式而生的,为了保证数据读写分离和数据安全,把数据放在不同的机子上,可以减少主节点的读压力,而让从节点去承受读请求压力. 主节点用 ...
- HTML5 智能表单
HTML5 智能表单 1.表单新增属性 ☀ autofocus 属性 <input type="text" autofocus/>设置 autofocus 属性,使文 ...
- 将前台input中的数据异步传到后台并存入数据库
将前台input中的数据异步传到后台并存入数据库 先看图: 利用ajax异步交互数据,并不是以json数组的形式将数据传到后台,而是利用字符数组的形式将其传到后台.动态新增每一行数据,将每一列对应的数 ...
- java switch 优化
关键字 switch 语句用于多条件判断,switch 语句的功能类似于 if-else 语句,两者的性能差不多.但是 switch 语句有性能提升空间.清单 16 所示代码演示了 Switch 与 ...
- Ch2 空间配置器(allocator) ---笔记
2.1 空间配置器的标准接口 allocator的必要接口: allocator::value_type allocator::pointer allocator::const_pointer all ...
- js操作符总结
算数操作符加法操作符(+),减法操作符(-),除法操作符(/),乘法操作符(*)还可以把多种操作组合在一起:1+4*5避免产生歧义,可以用括号把不同的操作分隔开来:1+(4*5):(1+4)*5变量可 ...
- winServer2008添加IIS服务
右键我的电脑,选择管理,打开服务器管理器 点击左边菜单栏角色调出角色窗口 接着点击添加角色,弹出添加角色向导 点击下一步进入服务器角色选项 勾选Web服务器(IIS),点击下一步 出现 点击下一步,出 ...
- Java 四舍五入并小数点后保存两位,千分位分隔
import java.text.DecimalFormat; public class FileTest { public static void main(String[] args) { ...
- img 转化成iso镜像的办法
最近在使用KVM启用虚拟机,然后将里面的环境和配置 配置成我们公司需要的环境,再打包成iso镜像,之后再次生成新的虚拟机. 但是KVM启动出的镜像生成的是img镜像 ,需要将img镜像转换成iso镜像 ...
- c++ 随手记
强类型的理解 先定义一些基础概念 Program Errors trapped errors.导致程序终止执行,如除0,Java中数组越界访问 untrapped errors. 出错后继续执行,但可 ...