解题思路:
注意事项:
参考代码:
#include<stdio.h>
int max(int a,int b)
{
return a>b?a:b;
}
int fun(int *a,int *b,int c)
{
for(int i=c-1;i>=0;i--)
{
if(a[i]<b[i])
return 0;
}
return 1;
}
int main()
{
//定义变量(不知道为什么?我想通过变量来定义数组,在这里运行结果是错的,在其他地方就对了。)
int n,ma,mb,mx,i;
int a[100005]={0};
int b[100005]={0};
int t[100005];
int c[100005];
long long sum=0,k=1;
//装入数据
scanf("%d",&n);
scanf("%d",&ma);
for(i=ma;i>0;i--) scanf("%d",&a[i]);
scanf("%d",&mb);
for(i=mb;i>0;i--) scanf("%d",&b[i]);
//确定进制(我看其他的人的方法,好像都没判断,ma与mb的大小。不知道为什么不用判断?当然我判断了结果也是对的。)
m=max(dn,dm);
if(dn>dm||(dn==dm&&fun(a,b,m)))
{
for(i=1;i<=m;i++)
{
t[i]=max(max(a[i]+1,b[i]+1),2);
if(i<=dm) c[i]=a[i]-b[i];
else c[i]=a[i];
}
}
else
{
for(int i=i;i<=m;i++)
{
t[i]=n;
if(i<=dn)c[i]=a[i]-b[i];
else c[i]=b[i];
}
}
//进行计算(这题里面,在将数装进变量时一定要进行”%1000000007“,否则将越界的)
for(int i=1;i<=m;i++)
{
sum=(sum+c[i]*k)%1000000007;
k=k*t[i]%1000000007;
}
printf("%lld",sum);
return 0;
}
0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复