解题思路:
注意事项:
参考代码:
#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分
4 人评分
A+B for Input-Output Practice (V) (C++代码)浏览:485 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:388 |
DNA (C语言代码)浏览:440 |
震宇大神的杀毒软件 (C语言代码)浏览:1162 |
班级人数 (C语言代码)浏览:980 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:585 |
简单的a+b (C语言代码)浏览:617 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:672 |
Manchester- A+B for Input-Output Practice (II)浏览:1365 |
printf基础练习2 (C语言代码)浏览:651 |