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)的更多相关文章

  1. CF Round #580(div2)题解报告

    CF Round #580(div2)题解报告 T1 T2 水题,不管 T3 构造题,证明大约感性理解一下 我们想既然存在解 \(|a[n + i] - a[i]| = 1\) 这是必须要满足的 既然 ...

  2. CF round #622 (div2)

    CF Round 622 div2 A.简单模拟 B.数学 题意: 某人A参加一个比赛,共n人参加,有两轮,给定这两轮的名次x,y,总排名记为两轮排名和x+y,此值越小名次越前,并且对于与A同分者而言 ...

  3. [CF Round #295 div2] C. DNA Alignment 【观察与思考0.0】

    题目链接:C. DNA Alignment 题目大意就不写了,因为叙述会比较麻烦..还是直接看英文题面吧. 题目分析 经过观察与思考,可以发现,构造的串 T 的每一个字符都与给定串 S 的每一个字符匹 ...

  4. [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= ...

  5. [CF Round #294 div2] D. A and B and Interesting Substrings 【Map】

    题目链接:D. A and B and Interesting Substrings 题目大意 给定26个小写字母的权值,一共26个整数(有正有负). 给定一个小写字母组成的字符串(长度10^5),求 ...

  6. 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 ...

  7. CF Round#436 div2

    额,这次的题目其实挺智障的.所以通过这次比赛,我也发现了自己是一个智障.... 不说太多,说多是泪... A. Fair Game 题意:给你一个数组,看你能否把它均分为两个所有元素均相同的子数组. ...

  8. CF Round #569 Div2(contest1180)

    比赛链接:http://codeforces.com/contest/1180 Problem A 题意:给出n,问方块数.看图理解... Solution: 找一找规律就可以了,发现方块数为2n*( ...

  9. CF Round #687 Div2 简要题解

    题面 A 可以发现,最远的几个人一定是 \((1, 1), (1, m), (n, 1), (n, m)\) 中的一个,直接计算即可. B 注意到颜色数量很少,直接暴力枚举最终的颜色后模拟即可. C ...

随机推荐

  1. 错误: 找不到或无法加载主类 tomcat-juli.jar

    错误: 找不到或无法加载主类 tomcat-juli.jar 然后就可以用了.

  2. context.response.end()和return的区别

    最近忽然想起这个问题,上网查了很多,觉得这个网友回答的很给力,从本质上剖析了问题.最后发现这篇文章也是转载自博客园的一位网友.http://www.cnblogs.com/adolphyang/p/4 ...

  3. OpenVPN客户端证书合并到配置文件中

    这里只讲OpenVPN客户端证书合并到配置文件中,避免文件太多,管理不便! 生成的客户端证书和配置文件,客户端需要的一共有5个文件:ca.crt.client.crt.client.key.ta.ke ...

  4. js-时间函数相互转化

    1.日期函数 获取当前时间对象 var date = new Date(); 2.日期函数 => 时间对象 (yyyy-mm-dd hh:mi:ss => 时间对象) endLogTime ...

  5. eclipse中svn提交过滤不需要的文件

    eclipse>Preference>Team>Ignored Resource 添加   .settings   .classpath   .project

  6. Scheme-CPS

    给出斐波那契数列计算函数,普通版和CPS版 #lang SCHEME (define (fib n) (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2)))) ...

  7. metrics实践 (metrics-spring)

    这里主要介绍metrics与spring集成的使用方式. 1  添加maven依赖 <dependency> <groupId>com.ryantenney.metrics&l ...

  8. openstack私有云布署实践【18 修改实例DHCP服务的DNS IP】

    某天,由于Linux服务器默认没有DNS缓存功能,每次服务器每访问一个http域名链接时,都会触发一次DNS域名解析查询,降低了调用API接口的时延,所以我司后续启用的内网的dnsmasq DNS服务 ...

  9. Python实现简单的HTTP服务器(支持文件上传下载)

    1.python内置模块 SimpleHTTPServer  (支持下载功能) 在对应的工作目录下,运行命令python -m SimpleHTTPServer 即可把当前目录下以共享服务的形式共享出 ...

  10. Unity人工智能学习—确定性AI算法之追踪算法二

    转自:http://blog.csdn.net/zhangxiao13627093203/article/details/47658673 上一篇讲到了追踪算法的比较简单的形式,看上去比较假,因为AI ...