概述
CCF- CSP 202012-5星际旅行 80分骗分题解
题目链接:202012-5星际旅行
思路:
- 题目条理比较清晰,对于这种第五题,我们在考试时尽可能拿更多的分(第5题拿满分我不敢奢望hhhh),在此只提出一些应该注意的小细节
- 数据类型采用
unsigned long long
数据范围比long long
更大,如果只采用long long
最后只有70分 - 多次采用取模运算,在操作2乘法计算完后,进行取模操作,否则只有20分
- 在操作4后,求得指定区间内的坐标和后,进行取模运算
- 在计算平方和时:1.计算完单一坐标的平方后取模,2.计算完所有的坐标的平方和后取模
具体代码:
#include<iostream>
#include<algorithm>
using namespace std;
typedef unsigned long long ULL;
const ULL N = 1e5+10,mod = 1e9+7;
ULL n,m;
struct node{
ULL x,y,z;
}node[N];
int main()
{
cin>>n>>m;
while(m--)
{
ULL x;
cin>>x;
if(x==1)
{
ULL l,r,a,b,c;
cin>>l>>r>>a>>b>>c;
for(ULL i=l;i<=r;i++)
{
node[i].x+=a;
node[i].y+=b;
node[i].z+=c;
}
}
else if(x==2)
{
ULL l,r,k;
cin>>l>>r>>k;
for(ULL i=l;i<=r;i++)
{
node[i].x*=k;
node[i].x = node[i].x%mod;
node[i].y*=k;
node[i].y = node[i].y%mod;
node[i].z*=k;
node[i].z = node[i].z%mod;
}
}
else if(x==3)
{
ULL l,r;
cin>>l>>r;
for(ULL i=l;i<=r;i++)
{
ULL x_ = node[i].x;
ULL y_ = node[i].y;
ULL z_ = node[i].z;
node[i].x = y_;
node[i].y = z_;
node[i].z = x_;
}
}
else if(x==4)
{
ULL l,r;
cin>>l>>r;
ULL x_ = 0,y_ = 0,z_ = 0;
for(ULL i=l;i<=r;i++)
{
x_+=node[i].x;
y_+=node[i].y;
z_+=node[i].z;
}
x_ = x_%mod;
y_ = y_%mod;
z_ = z_%mod;
ULL s = (x_*x_%mod+y_*y_%mod+z_*z_%mod)%mod;
cout<<s<<endl;
}
}
}
最后
以上就是体贴网络为你收集整理的CCF- CSP 202012-5星际旅行 80分骗分题解的全部内容,希望文章能够帮你解决CCF- CSP 202012-5星际旅行 80分骗分题解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复