任何人都可以在这个时候帮助我超过错误
can anyone help me in this time exceeds error
** 考虑以下顺序:
7,77,777, 7777,...
设 T 是该序列中可被 2003 整除的最小元素。T 有多少位数?**
在此处输入代码
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int a=0;
int count =0;
for(int i=1;;i++);
{
a=a*10+7;
if (a%2003==0)
{
break;
}
else
{
count++;;
}
}
cout << count+1 ;
return 0;
}
尝试将 int 替换为 double。
如果打印 a 的值,您可以看到它在几次迭代后溢出。无论如何,错误是由于无限循环引起的,所以你的进程被终止了。
这个问题的所有内容在编译时都是已知的。所以让编译器解决这个问题:
#include <stdio.h>
#include <cstddef>
consteval std::size_t solve() {
int a=0;
std::size_t count = 0;
do {
a = (a*10 +7) % 2003;
++count;
} while (a != 0);
return count;
}
int main() {
printf("%zd\n", solve());
}
导致:
.LC0:
.string "%zd\n"
main:
sub rsp, 8
mov esi, 1001
mov edi, OFFSET FLAT:.LC0
xor eax, eax
call printf
xor eax, eax
add rsp, 8
ret
如您所见,这只会调用 printf 并以 1001
作为参数。
** 考虑以下顺序: 7,77,777, 7777,... 设 T 是该序列中可被 2003 整除的最小元素。T 有多少位数?** 在此处输入代码
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int a=0;
int count =0;
for(int i=1;;i++);
{
a=a*10+7;
if (a%2003==0)
{
break;
}
else
{
count++;;
}
}
cout << count+1 ;
return 0;
}
尝试将 int 替换为 double。
如果打印 a 的值,您可以看到它在几次迭代后溢出。无论如何,错误是由于无限循环引起的,所以你的进程被终止了。
这个问题的所有内容在编译时都是已知的。所以让编译器解决这个问题:
#include <stdio.h>
#include <cstddef>
consteval std::size_t solve() {
int a=0;
std::size_t count = 0;
do {
a = (a*10 +7) % 2003;
++count;
} while (a != 0);
return count;
}
int main() {
printf("%zd\n", solve());
}
导致:
.LC0:
.string "%zd\n"
main:
sub rsp, 8
mov esi, 1001
mov edi, OFFSET FLAT:.LC0
xor eax, eax
call printf
xor eax, eax
add rsp, 8
ret
如您所见,这只会调用 printf 并以 1001
作为参数。