我有一个家庭作业,它通过一个编译器检查一切是否正确,但它不断给出结果:“超出时间限制”,该应用程序在普通 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;
}
最佳答案
回答字面问题,怎么改cout
至 printf
.
而不是 #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/