题目描述
给定两个不同的正整数x,y,若x+y能被3除尽或能被7除尽,则称x,y为姐妹数对。例如:
2,4;2,5;为姐妹数对。
3,14; 不是姐妹数对。
那么,对给出的一个整数n(1≤n≤100), 1,2,…,n之间有多少个姐妹数。
输入
一个整数n
输出
一个整数,即1~n之间姐妹数对的个数。
样例输入
6
样例输出
8
分析
我们可以用循环嵌套来做,一个代表x,一个代表y
如果满足x+y能被3除尽或能被7除尽这个条件就加1
根据这些我们可以写出代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,sum=0;
cin>>n;
for(int x=1;x<=n;x++){
for(int y=1;y<=n;y++){
if((x+y)%3==0||(x+y)%7==0){
sum++;
}
}
}
cout<<sum;
return 0;
}
但是运行结果却和答案不符:
答案:输入6,输出8
实际:输出6,输出18
是因为x和y两个要不同,而且数对会有重复,如:
x | y | 是否是姐妹数对 |
---|---|---|
1 | 2 | 是 |
...... | ...... | ...... |
2 | 1 | 是 |
所以我们要加入
if(x!=y){
}
和
cout<<sum/2;
完整代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,sum=0;
cin>>n;
for(int x=1;x<=n;x++){
for(int y=1;y<=n;y++){
if((x+y)%3==0||(x+y)%7==0){
if(x!=y){
sum++;
}
}
}
}
cout<<sum/2;
return 0;
}