三元组 题解
题目描述
kkkw在研究三元组的性质。对于一个三元组 (a, b, c),它的值定义为a * b * c。现在kkkw有 n 个三元组,他想知道其中值为 3 的倍数的三元组有多少个。请编写程序帮助kkkw解决这个问题。
输入格式
第一行包含一个整数 n(n<=1e5),表示三元组的个数。
接下来 n 行,每行包含三个整数 ai, bi, ci,表示第 i 个三元组。
输出格式
输出一个整数,表示值为 3 的倍数的三元组个数。
输入输出样例 #1
输入 #1
3
1 2 3
4 5 6
7 8 9
输出 #1
3
输入输出样例 #2
输入 #2
2
1 2 4
2 2 2
输出 #2
0
说明/提示
样例1解释:
三个三元组的值分别为 6、120、504,均为 3 的倍数。
样例2解释:
两个三元组的值分别为 8 和 8,均不为 3 的倍数。
数据范围
50%数据 0<=ai,bi,ci<=1000
70%数据 0<=ai,bi,ci<=10^6
100%数据 0<=ai,bi,ci<=10^18
思路分析
很多朋友一开始会直接把三个数相乘,结果你看一看:最大数据达到了 10 18 10^{18} 1018,如果你不想用高精的话,请听我的思路:
首先就输入,判断其中是否有一个是三的倍数,那另外两个就一定是三的倍数。
结束了,代码见下面:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a, b, c, n, ans;
signed main(){freopen("three.in","r",stdin);freopen("three.out","w",stdout);cin >> n;for(int i = 1; i <= n; i ++){cin >> a >> b >> c;if(a % 3 == 0 || b % 3 == 0 || c % 3 == 0) ans ++;}cout << ans;return 0;
}