概述
求n个数的最小公倍数
#include<iostream>
using namespace std;
int gcd(int a,int b){
int r=a%b;
if(r==0) return b;
else return gcd(b,r);
}
int nlcm(int a[],int b){
while(b!=1){
a[b-2]=a[b-1]*a[b-2]/gcd(a[b-1],a[b-2]);
--b;
}
return a[0];
}
int main(){
int t;cin>>t;
while(t--){
int n,num[100];
cin>>n;
for(int i=0;i<n;i++) cin>>num[i];
int ans=nlcm(num,n);
cout<<ans<<endl;
}
return 0;
}
n的n次幂的个位数
找规律
#include<iostream>
using namespace std;
int solve(unsigned long long n){
int x=n%10,ans;
if(x==0){
ans=0;
}
else if(x==1){
ans=1;
}
else if(x==2){
int y=n%4-1;
if (y==0) ans=2;
else if(y==1) ans=4;
else if(y==2) ans=8;
else ans=6;
}
else if(x==3){
int y=n%4-1;
if (y==0) ans=3;
else if(y==1) ans=9;
else if(y==2) ans=7;
else ans=1;
}
else if(x==4){
int y=n%2-1;
if (y==0) ans=4;
else ans=6;
}
else if(x==5){
ans=5;
}
else if(x==6){
ans=6;
}
else if(x==7){
int y=n%4-1;
if (y==0) ans=7;
else if(y==1) ans=9;
else if(y==2) ans=3;
else ans=1;
}
else if(x==8){
int y=n%4-1;
if (y==0) ans=8;
else if(y==1) ans=4;
else if(y==2) ans=2;
else ans=6;
}
else if(x==9){
int y=n%2-1;
if (y==0) ans=9;
else ans=1;
}
return ans;
}
int main(){
int t;
cin>>t;
unsigned long long n;
while(t--){
cin>>n;
int ans=solve(n);
cout<<ans<<endl;
}
return 0;
}
快速幂
#include<iostream>
using namespace std;
unsigned long long rapidpow(unsigned long long a,unsigned long long b){
unsigned long long ans=1;
while(b){
ans=rapidpow(a*a,b/2);
if(b/2==1) ans*=a;
}
return ans;
}
int main(){
unsigned long long a,b;
cin>>a>>b;
while(a&&b){
unsigned long long ans=rapidpow(a,b);
cout<<ans<<endl;
cin>>a>>b;
}
return 0;
}
一个新的斐波那契数列
Problem Description
现在,有一个新的斐波那契数列,定义如下:
- F(0) = 7,
- F(1) = 11,
- F(n) = F(n-1) + F(n-2) (n>=2).
Input
输入包含多组测试样例,每组测试样例包含一个整数n(n < 1,000,000).
Output
如果F(n)能够被3整除,请输出"yes",否则请输出"no"。
Sample Input
0
1
2
3
4
5
Sample Output
no
no
yes
no
no
no
找规律
#include<iostream>
using namespace std;
int main(){
int n;
while(cin>>n){
int x=(n+1)%8;
if(x==3||x==7) cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
return 0;
}
解方程
Problem Description
给定方程 8x4 + 7x3 + 2x2 + 3x + 6 == Y,请计算x在[0,100]范围内的解。
Input
输入数据首先是一个正整数T(1<=T<=100),表示有T组测试数据。
接下来T行,每行包含一个实数Y ( fabs(Y) <= 1e10 )。
Output
请计算并输出方程在范围[0,100]内的解,结果精确到小数点后4位。
如果无解,则请输出“No solution!”
Sample Input
2
100
-4
Sample Output
1.6152
No solution!
二分法
#include<iostream>
#include<math.h>
using namespace std;
double solve(double y){
double l=0,r=100;
while(l<r){
double mid=(l+r)/2;
double f=mid*(mid*(mid*(mid*8+7)+2)+3)+6;
if(fabs(f-y)<=1e-4)
return mid;
else if(f<y)
l=mid;
else if(f>y)
r=mid;
}
return -1;
}
int main(){
int t;
cin>>t;
while(t--){
double y;
cin>>y;
double ans=solve(y);
if(ans==-1) printf("No solution!n");
else printf("%.4lfn",ans);
}
return 0;
}
最后
以上就是负责荷花为你收集整理的2021.1.28寒假打卡Day21的全部内容,希望文章能够帮你解决2021.1.28寒假打卡Day21所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复