稀疏向量
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;
}
这篇博客探讨了如何使用C++处理大数值下的稀疏向量乘法问题,通过使用map存储避免了数组溢出,并展示了一个具体的代码实例。同时,还介绍了一个有趣的报数问题,重点在于处理包含数字7的情况,代码中用while循环巧妙地完成了这一任务。

被折叠的 条评论
为什么被折叠?



