我写了一个C++程序,编译后被QVM报毒,什么时候可以不乱报啊。
编译后:wwrd点lanzoum点com斜杠ixHJe377xljg 密码:e7b8
程序:
// 题目:
// 斐波那契数列 F1,F2,⋯,Fk,⋯ 如下定义 :
// F(1)=F(2)=1
// F(k)=F(k−1) +F(k−2),(k≥3)
// 可以证明,对任何正整数 m,都存在一个斐波那契数的开头数字恰好和 m 相同。
// 输入 m,输出第一个开头和 m 相同的斐波那契数。
// 1≤m≤10^9。 保证答案不超过1000位。
#include<iostream>
using namespace std;
int m, n = 3, x[10], f[1005][1005] = {{}, {1, 1}, {1, 1}};
void i2big(int x, int a[]) {
while (x > 0) {
a[++a[0]] = x % 10;
x /= 10;
}
if (a[0] == 0) {
a[0] = 1;
}
}
void addbig(int a[], int b[], int c[])
{
c[0] = max(a[0], b[0]);
int u = 0;
for (int i = 1; i<= c[0]; i++) {
int l = a + b + u;[/i][/i]
c = l % 10;[/i]
u = l / 10;
}
if (u) c[++c[0]] = u;
}
bool checkbig(int a[])
{
if (a[0]< x[0]) return false;
for (int i = 1; i<= x[0]; i++) {
if (a[a[0]-i+1] != x[x[0]-i+1]) {
return false;
}
}
return true;
}
void printbig(int a[]) {
for (int i = a[0]; i >= 1; i--) {
cout<< a;[/i]
}
}
int main(){
cin >> m;
i2big(m, x);
if (m == 1) {
cout<< 1;
return 0;
}
while (true) {
addbig(f[n-1], f[n-2], f[n]);
if (checkbig(f[n])) {
printbig(f[n]);
return 0;
}
n++;
}
return 0;
}
// 编译代码:g++.exe "C:\C++\测试.cpp" -o "C:\C++\测试.exe" -Wall -Wextra -g3 -finput-charset=gbk -fexec-charset=gbk -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\include\c++\10.3.0" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\include\c++\10.3.0\x86_64-w64-mingw32" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\include\c++\10.3.0\backward" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\10.3.0\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\10.3.0\include-fixed" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include" -L"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib" -L"C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib" -g3 -static[/i][/i][/i][/i] |
|
|
|
评论
直达楼层