c++ - 如何在 C++ 中将 cout 更改为 printf?或者如何使控制台应用程序运行得更快?

标签 c++ algorithm

我有一个家庭作业,它通过一个编译器检查一切是否正确,但它不断给出结果:“超出时间限制”,该应用程序在普通 C++ 编译器中正常工作,但我必须将代码发送给 Themis,但没有因“超出时间限制”而接受

任务 :
输入:
在第一个输入行中给出指定测试次数的整数 t (1 ≤ t ≤ 100000)。每个测试由三个整数给出:a、b、m 如上定义(1 ≤ a ≤ 10^9、0 ≤ b ≤ 10^9、1 ≤ m ≤ 10^6)。

输出:

应打印 T 行。在每一行中,查询的答案是:(a^b)% m .

输入数据示例:

2
3 2 10

正确答案是:9
一位 friend 告诉我将 cout 更改为 printf,这可能会导致运行速度更快,但我不知道该怎么做。

我的代码
#include <iostream>

using namespace std;

int main()
{
    int t;
    cin>>t;

    for (int i=0; i<t; ++i)
    {
        int a,b,m;
        long long int x,wynik=1;

        cin>>a>>b>>m;

        x=(long long int) a;

        do
        {
            x%=(long long int)m;
            if (b&1) {
                wynik*=x;
                wynik%=(long long int)m;
            }
            x*=x;
        } while (b>>=1);

        cout <<wynik<<endl;;
    }

    return 0;
}

最佳答案

回答字面问题,怎么改coutprintf .

而不是 #include <iostream> , 你要 #include <cstdio> ,是“C语言标准输入输出”的简称。

而不是 cout <<wynik<<endl; , 你要 printf("%d\n", (int) wynik) .在这里,"%d\n"是一个格式化字符串,表示“打印下一个参数,应该是 int,十进制,然后打印换行符”。

您可能还想使用 C 样式输入,然后更改 cin>>a>>b>>m;进入 scanf("%d%d%d", &a, &b, &m); .这表示“读取三个十进制整数,一个到变量 a(& 取变量的地址),另一个到 b,另一个到 m

也就是说,请注意 C 风格和 C++ 风格的输入和输出的相对速度取决于很多因素,包括编译器版本、操作系统和环境。在另一个测试环境中,您可能会发现 cout实际上与 printf 相当或更快.

关于c++ - 如何在 C++ 中将 cout 更改为 printf?或者如何使控制台应用程序运行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60515807/

相关文章:

c++ - 取消定义已经包含的标题

c++ - Clang-Tidy:检查函数中的行数

c++ - Qt 使用 QVariant 调用方法

javascript - 使用 trie 自动完成

c++ - 作为计划任务运行的 .exe 不写入文件

c# - 无法在 Visual Studio 2012 Ultimate SP1 x64 中创建或打开网站

multithreading - 是否存在任何基于数组的、有界的、无等待的堆栈?

algorithm - 检查是否可以对二进制字符串进行分区,使得每个分区都是 5 的幂

c++ - C++中的合并排序实现

algorithm - 贝塞尔路径裁剪的最佳算法是什么