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 ...
随机推荐
- [ios2] iOS常用控件尺寸大集合 【转】
元素控件 尺寸(PTS) Window(含状态栏) 320 x 480 Status Bar的高度 20 Navigation Bar的高度 44 含Prompt的Navigation Bar的高度 ...
- Kotlin的扩展函数:扩展Android框架(KAD 08)
作者:Antonio Leiva 时间:Jan 11, 2017 原文链接:https://antonioleiva.com/extension-functions-kotlin/ 扩展函数是Kotl ...
- BTE 增强
BTE的设计思路还是比较简单,和BADI有点类似.在标准程序中留有OPEN_FI的出口(以函数OPEN_FI_PERFORM_event id_type的形式存在),然后提供一个可配置的TABLE,可 ...
- Access一些常用的SQL语句
您可以将 Microsoft Office Access 2013 用作创建.修改数据库以及处理数据的工具,还可将 Office Access 2013 用作服务器数据库管理系统(如 Microsof ...
- yeoman生成react基本架构
工欲善其事必先利其器.在开始react开始之前,我们先使用一系列的前段工具构建自己的前端集成解决方案. 环境配置: Bower,node js,npm,Grunt,Gulp,Yeoman 作者一直使用 ...
- Node.js调用百度地图Web服务API的Geocoding接口进行点位反地理信息编码
(从我的新浪博客上搬来的,做了一些修改.) 最近迷上了node.js以及JavaScript.现在接到一个活,要解析一个出租车点位数据的地理信息.于是就想到使用Node.js调用百度地图API进行解析 ...
- GroupingView点击分组标题不展开,或点击标题部分文字不展开
GroupingView结构: 分组标题groupTextTpl是用两个DIV 来进行修饰的,在mouseDown时,EXT会查找css class=".x-grid-group-hd ...
- java知识点梳理
网络搜索结果,出处不详,仅供参考 对于刚刚接触Java的人,java基础知识技术点繁多,那么gkstk小编为大家汇总最全java知识点如下,仅供大家参考学习! 1. JVM相关(包括了各个版本的特性) ...
- shell中bash的常见命令
shell 在计算机科学中,Shell俗称壳,用来区别Kernel(核) Shell分类:1:图形界面shell:通过提供友好的可视化界面,调用相应应用程序,如windows系列操作系统,Linux系 ...
- FZU 2243 Daxia like uber
枚举,最短路. 求出5个点出发的最短路,然后枚举一下这些点之间走的顺序. #pragma comment(linker, "/STACK:1024000000,1024000000" ...