稀疏向量
C++解答
由于数值量很大,使用数组的话会爆掉,可以使用map进行存储,同时将result设置成long long类型
#include<iostream>
#include<map>
using namespace std;
int main()
{
int n,a,b;
long long result=0;
cin>>n>>a>>b;
//int x[n+1]={0},y[n+1]={0};
map<int,int>x;
map<int,int>y;
for(int i=1;i<=a;i++){
int k,m;
cin>>k>>m;
x[k]=m;
}
for(int i=1;i<=b;i++){
int k,m;
cin>>k>>m;
y[k]=m;
if(x[k]!=0){
result+=y[k]*x[k];
}
}
cout<<result;
return 0;
}
报数
C++解答
注意含7的求法,while一下
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int cnt=1;//计数
int num=1;//报数
int result[4]={0};//甲乙丙丁的数目
while(cnt<=n){
if(num%7==0){//是否是7的倍数
result[(num-1)%4]+=1;
}else{
int temp=num;
while(temp){
if(temp%10==7){
result[(num-1)%4]+=1;
break;
}
temp/=10;
}
if(temp==0){
cnt++;
}
}
num++;
}
for(int i=0;i<4;i++){
cout<<result[i]<<endl;
}
return 0;
}