试题A:立方和(5分)
#include<bits/stdc++.h>
using namespace std;
bool ifCon(int n){
while(n){
int temp=n%10;
if(temp==2 || temp==0 || temp==1 || temp==9){
return true;
}
n/=10;
}
return false;
}
int main() {
int sum=0;
for(int i=1;i<=2019;i++){
if(ifCon(i)){
sum+=pow(i,3);
}
}
cout<<sum<<endl;
return 0;
}
题目答案:4097482414389
考点:注意sum要用long long
试题B:字串数字(5分)
#include<bits/stdc++.h>
using namespace std;
int main(){
string list="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string x="LANQIAO";
long long sum=0;
int y=0;
for(int i=x.length()-1;i>=0;i--,y++){
int temp=list.find(x[i])+1;
sum+=temp*pow(26,y);
}
cout<<sum<<endl;
return 0;
}
题目答案:3725573269
试题C:质数(10分)
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int n){
if(n<=1){
return false;
}
else if(n==2){
return true;
}
else{
for(int i=2;i<n;i++){
if(n%i==0){
return false;
}
}
return true;
}
}
int main(){
int count=0;
int i=0;
while(count!=2019){
i++;
if(isPrime(i)){
count++;
}
}
cout<<i<<endl;
}
试题D:最短路(10分)
试题E:RSA解密(15分)
import libnum
import gmpy2
e=212353
c=20190324
n=1001733993063167141
print(libnum.factorize(n))
p=1123984201
q=891234941
phi=(p-1)*(q-1)
d=gmpy2.invert(e,phi)
print(pow(c,d,n))
题目答案:579706994112328949
这题我暂时用的是python写的,一定会把C++的补上的,用C++写确实比Python困难很多。 主要在于,大整数分解,求逆元
试题F:Fibonacci数列与黄金分割(15分)
先按正常逻辑写
#include<bits/stdc++.h>
using namespace std;
long long F(long long n){
if(n==1 || n==2){
return 1;
}
else{
return F(n-1)+F(n-2);
}
}
int main(){
long long n;
cin>>n;
cout<<fixed<<setprecision(8)<<F(n)*1.0/F(n+1)<<endl;
return 0;
}
因为当输入的n过大,递归占用内存无比大,几乎算不出来 发现只要超过一个数之后,值都一样,测试出来是20 更改代码
#include<bits/stdc++.h>
using namespace std;
long long F(long long n){
if(n==1 || n==2){
return 1;
}
else{
return F(n-1)+F(n-2);
}
}
int main(){
long long n;
cin>>n;
double x;
if(n>20){
x=F(20)*1.0/F(21);
}
else{
x=F(n)*1.0/F(n+1);
}
cout<<fixed<<setprecision(8)<<x<<endl;
return 0;
}
试题G:扫地机器人
试题H:修改数组(20分)
试题I:灵能传输(25分)
试题J:空间跳跃(25分)
|