🎆音乐分享
Play_Alan Walker、K-391、Tungevaag、Mangoo
目录
🍔🍔🍔🍔
题目1
方法一(通法)
🏳️🌈🏳️🌈🏳️🌈🏳️🌈🏳️🌈🏳️🌈
打表找到规律
🏳️🌈🏳️🌈🏳️🌈🏳️🌈🏳️🌈🏳️🌈
打表
#include <iostream>
using namespace std;
//给定一个m,是否能用p和q凑出来
bool dfs(int m,int p,int q)
{
if(m == 0) return true;
if(m >= p && dfs(m - p,p,q)) return true;
if(m >= q && dfs(m - q,p,q)) return true;
return false;
}
int main()
{
int p,q;
cin >> p >> q;
int res = 0;
for(int i = 1; i <= 1000;i ++)
{
if(!dfs(i,p,q)) res = i;
}
cout << res << endl;
return 0;
}
#include<iostream>
using namespace std;
int n,m;
int main()
{
scanf("%d%d",&m,&n);
printf("%d\n",(n-1)*m-n);
return 0;
}
先用上面的代码试几个数,找到规律
方法二
参考:AcWing 1205. 超简洁代码+详解 – AcWing
#include<iostream>
using namespace std;
int n,m;
int main()
{
scanf("%d%d",&n,&m);
int k=n*m;
while(k)
{
int t=k;
while(t%m!=0&&t-n>0)t-=n;
if(t%m!=0&&k%n!=0&&k%m!=0)//这一步就是判断了1、2、3 三个条件
{
printf("%d",k);
break;
}
k--;
}
题目2
1002-小q的数列_2021秋季算法入门班第二章习题:递归、分治 (nowcoder.com)
打表找规律
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
0 1 1 2 1 2 2 3 1 2 2 3 2 3 3 4 1 2
pow(2,i)-1
代码
#include<iostream>
#include<cmath>
#define ll long long
using namespace std;
ll f(ll n){
if(n==0){
return 0;
}
else if(n==1){
return 1;
}
else{
return f(n/2)+f(n%2);
}
}
int main(){
ll a[70]={0};
for(int i=0;i<=63;i++){
a[i]=pow(2,i)-1;
}
int t;
cin>>t;
while(t--){
ll n;
cin>>n;
cout<<f(n)<<" "<<a[f(n)]<<endl;
}
return 0;
}
Code over!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131368.html