b2b电子商务营销平台有哪些免费seo网站自动推广软件
1.握手问题
思维:
对于第一个人来说 除了自己以外要跟其他49人握手 所以第一个是49 //对于第二个人来说 第一个人主动跟我握手了 有一次不算 所以第二个是48.。。 //以此类推 第43个人就是7 到了最后七个人呢 因为互相都没有握手 并且7个人都被前面的人握过手了 所以都是0
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int sum=0;for(int i=49;i>=7;i--){sum+=i; }cout<<sum<<endl;return 0;
}
2.小球反弹
想象延长矩形
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int t=1,x=343720,y=233333;while(1){if(15*t%x==0 && 17*t%y==0){break;}t++;}printf("%.2lf",2*sqrt(15*t*15*t+17*t*17*t));return 0;
}
3.好数
模拟题,模拟题目意思即可
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,sum=0;
bool check(int x)
{vector<int>a;while(x>0){a.push_back(x%10);x/=10;}for(int i=0; i<a.size(); i++){if((i+1)%2!=0 && a[i]%2==0) //奇数位不为奇数 {return false; }else if((i+1)%2==0 && a[i]%2!=0) //偶数位不为偶数 {return false; }}return true;
}
signed main()
{cin>>n;for(int i=1; i<=n; i++){if(check(i)){sum++;}}cout<<sum<<endl;return 0;
}
4.R 格式
本身是高精度问题,不过我就会下面方法,能过(40%)
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
long double d;
signed main()
{cin>>n>>d;printf("%.Lf\n",pow(2,n)*d);return 0;
}
5.宝石组合
推导公式,最后得出结论:s=gcd(Ha,Hb,Hc); 下面代码未进行优化时间复杂度
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int n,h[N];
vector<int>nums;
signed main()
{cin>>n;for(int i=0; i<n; i++){cin>>h[i];}sort(h,h+n);int max1=0;for(int i=0; i<n; i++){for(int j=i+1; j<n; j++){for(int k=j+1; k<n; k++) //i,j,k{int t=__gcd(__gcd(h[i],h[j]),h[k]);if(t>max1){nums.clear(); max1=t;nums.push_back(h[i]);nums.push_back(h[j]);nums.push_back(h[k]);}}}}for(int i=0;i<nums.size();i++){cout<<nums[i]<<" "; }return 0;
}
6.拔河
//题目意思是可以选择一部分连续的同学(非全选)
//枚举所有队伍可能的值,排序后最小的 两相邻队伍的差值 即为结果(若两数的差最小,其排序后一定相邻)
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[1010];
vector<int>nums;
signed main()
{cin>>n;for(int i=0;i<n;i++) cin>>a[i];for(int i=0;i<n;i++){int temp=0;for(int j=i;j<n;j++) {temp+=a[j];nums.push_back(temp);}}sort(nums.begin(),nums.end());int min1=LONG_MAX;for(int i=1;i<nums.size();i++){min1=min(min1,nums[i]-nums[i-1]); //两数的差最小,其排序后一定相邻}cout<<min1<<endl;return 0;
}