CSU-Benjamin 2018-12-21 00:26 采纳率: 33.3%
浏览 474

差不多的代码耗时相差两倍,为什么?求大佬解答?

差不多的代码为什么耗时相差那么多啊!!求大佬解答

`#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <iostream>
using namespace std;
long long a[100010];
long long m,n;
long long b[100010],c[100010];
int main()
{
    while(scanf("%LLd %LLd",&n,&m)!=EOF)
    {
        b[0]=1;
        c[n+1]=1;
        for(int i=1;i<n+1;i++)
        {
            scanf("%LLd",&a[i]);
            a[i]%=m;
            b[i]=(b[i-1]*a[i])%m;
        }
        for(int i=n;i>=1;i--)
        {
            c[i]=(c[i+1]*a[i])%m;
        }
         for(int i=1;i<=n;i++)
        {
            if(i==n)printf("%LLd\n",(c[i+1]*b[i-1])%m);
            else printf("%LLd ",(c[i+1]*b[i-1])%m);
        }
    }
    return 0;
}
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <map>
using namespace std;
typedef long long LL;
const int maxn=100005;
int n,m;
LL a[maxn];
LL b[maxn],c[maxn];
int main()
{
    while(scanf("%d %d",&n,&m)!=EOF)
    {
        b[0]=1;c[n+1]=1;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            a[i]%=m;
            b[i]=(b[i-1]*a[i])%m;
        }
        for(int i=n;i>=1;i--)
            c[i]=(c[i+1]*a[i])%m;
        for(int i=1;i<n;i++)
        {
            printf("%lld ",(b[i-1]*c[i+1])%m);
        }
        printf("%lld\n",b[n-1]);
    }
    return 0;
}

  • 写回答

2条回答 默认 最新

  • zgbzsu2008 2018-12-21 02:32
    关注

    应该是循环中哪个if else 判断比较耗时

    评论

报告相同问题?

悬赏问题

  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含