- 分享
国庆节day2总结
- @ 2024-10-3 20:17:33
第一题
题目描述 在一个古老的文明中,有一种神秘的金币。你是一名考古学家,偶然发现了这个文明的遗址,现在是时刻,有枚金币同时被发现。第枚金币会在 时刻后消失,它的价值是 。然而,由于地形和其他条件的限制,你每个时刻只能收集一枚金币。此外,你的背包有限,你最多只能收集枚币。现在,你面前有枚金币,你的任务是确定如何选择金币,以便在收集的金币数量不超过的前提下,最大化你可以获取的金币价值总和。 注意:金币被收集到背包之后就不会消失了。
思路 先排除废物信息,输入完后,将排序然后求n-k到n 内的总和最后求和
错误原因 无,对了嘻嘻嘻😊😊😊 正确代码
#include<bits/stdc++.h>
//#include<windows.h>
#pragma GCC optimize(3)
using namespace std;
long long a[1000005];
long long sum=0;
int main(){
freopen("coin.in","r",stdin);
freopen("coin.out","w",stdout);
ios::sync_with_stdio (0);
cin.tie(0), cout.tie(0);
long long n,k;
cin>>n>>k;
for(long long i=0;i<n;i++){
long long x;
cin>>x;
}
for(long long i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
for(long long i=n-k;i<n;i++) sum+=a[i];
cout<<sum;
return 0;
}
第二题
题目描述 牛牛上小学二年级了,现在他开始学习乘法。经过老师的悉心教导,牛牛已经能够算出两个数字的乘积了。结果老师发现,牛牛是偷偷拿到了老师的练习题答案,背下答案之后才说对了乘积!老师非常愤怒,决定给牛牛出更多的乘法题目,现在老师打算对这两个数字的数位进行交换,这样就可以构造出新的数字来考牛牛乘法了。例如原来的两个数字是和,那么他可以交换两个数字的千位,使得两个数字变成和,然后再计算它们的乘积。老师只会交换相同位置的数位,例如交换两个数字的千位,或者交换两个数字的百位,但是不能交换一个数字的千位和另一个数字的百位。老师可以进行无限次交换操作最终得到新的字, ,请问新的两个数字的乘积最大是多少。 思路 第一位不换,从第一位开始后面的每一位都按就交换和
错误原因 因为最后的时候把第四题的套分不小心交上去了
正确代码
#include<bits/stdc++.h>
using namespace std;
string n,m,z;
long long sum,ans,cnt;
int main(){
freopen("mul.in","r",stdin);
freopen("mul.out","w",stdout);
cin>>n>>m;
if(n<m){
swap(n,m);
}
bool f=0;
for(int i=0;i<n.size();i++){
if(n[i]>m[i]){
if(f==1)swap(n[i],m[i]);
f=1;
}
}
for(int i=0;i<n.size();i++){
sum=sum*10+n[i]-'0';
ans=ans*10+m[i]-'0';
}
cout<<sum*ans;
return 0;
}
第三题
题目描述 牛牛因为数学太差被老师赶出教室了,虽然老师侵犯了牛牛的公平教育权,但是牛牛在教室外的小卖部大彻大悟,提升了自己的数学水平。故事是这样的:学校里的小卖部里有一个活动:只要有三个饮料瓶就可以换一瓶新的饮料。现在牛牛从路边捡到了个饮料瓶,于是牛牛开始兑换饮料。他的兑换操作如下:先用个饮料瓶换瓶饮料,喝完。然后手里有个饮料瓶,再拿出个换 1 瓶饮料,这时手里有个饮料瓶。牛牛再问老板借瓶饮料,喝完之后又了 个饮料瓶,然后拿个饮料瓶换瓶饮料还给老板。有借有还,再借不难。在这个过程中,牛牛总共喝了瓶料。 牛牛现在有个饮料瓶,小卖部的活动是每个饮料瓶能换一瓶饮料,牛牛最多能喝几瓶饮料?牛牛已经大彻大悟,现在他拿这道题来考你,他希望你和他一样大彻大悟。
思路 推出公式 然后再用高精度除法模板推出传进去的参数 最后相除
错误原因 因为没有推出公式
正确代码
#include<bits/stdc++.h>
using namespace std;
vector<int> div(vector<int> A,long long b) {
vector<int> C;
long long t=0;
for(int i=0;i<A.size();i++){
t=t*10+A[i];
C.push_back(t/b);
t=t%b;
}
reverse(C.begin(),C.end());
while(C.size()>1&&C.back()==0)
C.pop_back();
return C;
}
int main(){
freopen("drink.in","r",stdin);
freopen("drink.out","w",stdout);
string a;
long long b;
cin>>a>>b;
vector<int> A;
for(int i=0;i<a.size();i++)
A.push_back(a[i]-'0');
vector<int> C;
C=div(A,b-1);
for(int i=C.size()-1;i>=0;i--)
cout<<C[i];
return 0;
}