链接:​​https://ac.nowcoder.com/acm/contest/301/A​​  

题目描述

小乐乐得知一周有7天之后就对7产生了兴趣。

小乐乐得到了两堆数字数字时连续的。

第一堆包含[1,n]n个数字,第二堆包含[1,m]m个数字。
小乐乐想要从两堆中各挑选出一个整数x,y,使得x,y的和为7的倍数。

请问小乐乐有多少种组合的方式。

输入描述:

输入整数n,m。(1<=n,m<=1e6)

输出描述:

输出满足的对数。

 

示例1

输入

复制

6 7

输出

复制

6

说明

(1,6),(2,5),(3,4),(4,3),(5,2),(6,1)

怎么说呢……自己的思路太不活跃了吧……可能是最近没有好好刷题的原因吧 ORZ

赛后看了题解太明白……ε=(´ο`*)))唉

思路:

对于1到n,分成了a[0,1,2,3,4,5,6] 7类,(i%7)

对于1到m,分成了b[0,1,2,3,4,5,6] 7类.(i%7)记录每一类的个数

最后的结果就是 sum+=(a[i]*b[7-i])  最后不要忘了 sum+=a[0]*b[0]  (7的倍数的个数)

#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <cmath>
#include <vector>
#include <algorithm>
#define ll long long
using namespace std;
ll a[7],b[7];
int n,m;
int main()
{
ll sum=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
cin>>n>>m;
for(int i=1;i<=n;i++)
{
a[i%7]++;
}
for(int i=1;i<=m;i++)
{
b[i%7]++;
}
for(int i=1;i<7;i++)
{
sum+=a[i]*b[7-i];
}
sum+=a[0]*b[0];//7的倍数与7的倍数
cout<<sum<<endl;
return 0;
}