NC24632. 多项式
描述
输入描述
第一行数据组数,表示共组数据对于每组数据,第一行一个整数,表示给出的项的个数接下来行,每行两个数字 和 ,代表给出的一个项。
输出描述
对于每组数据,输出一个数字,表示多项式中非零项的个数
示例1
输入:
1 3 1 7 2 6 3 4
输出:
3
说明:
最终多项式为示例2
输入:
1 3 2 8 3 6 2 4
输出:
2
说明:
最终多项式为Python3 解法, 执行用时: 1818ms, 内存消耗: 21016K, 提交时间: 2022-03-24 09:11:45
T=int(input()) for i in range(T): n=int(input()) prec={} for j in range(n): z,fi=map(int,input().split()) if z in prec: prec[z]=prec[z]+fi else: prec[z]=fi cnt=0 for v in prec.values(): if v!=0: cnt+=1 print(cnt)
C++14(g++5.4) 解法, 执行用时: 811ms, 内存消耗: 5220K, 提交时间: 2020-04-11 17:26:15
#include<bits/stdc++.h> using namespace std; map<int,int>M; int T,n,x,y,ans,i; int main(){ cin>>T; while(T--){ M.clear(); cin>>n; while(n--) cin>>x>>y,M[x]+=y; ans=0; for(auto it:M) ans+=(it.second!=0); cout<<ans<<endl; } }
C++(clang++ 11.0.1) 解法, 执行用时: 577ms, 内存消耗: 5096K, 提交时间: 2023-07-29 10:17:12
#include<bits/stdc++.h> using namespace std; map<int,int>M; int main() { int T,n,x,y,ans,i; cin>>T; while(T--) { M.clear(); cin>>n; while(n--) cin>>x>>y,M[x]+=y; ans=0; for(auto it:M) ans+=(it.second!=0); cout<<ans<<endl; } }