9.12
突然心血来潮,想写一个博客来记录这一次比赛。
但其实也不是我想写的,因为这次比赛搜索题目比较多,而搜索又是我这个S组菜鸡骗分的强项所以就好了
T1 蜗牛老师的最大质因子(100pts)
题目链接
分析:水水的签到题,不过我被这道题稍微卡了一下,因为我忘了怎么判断用质因数来找原来那个数,想用map但是忘了迭代器怎么拼。。
恰好!想到了结构体,可以用一个数组一个元素一个元素对应的排序写法,于是用结构体打了一遍,然后果不其然AC了。
应该在座的各位没有像我一样的吧??
#include<bits/stdc++.h>
using namespace std;
struct zdw{
long long num;
long long zhiyinshu;
}a[100001];
long long i=2,maxx=-999999;
long long b;
bool mycmp(zdw a,zdw b){
return a.zhiyinshu<b.zhiyinshu;
}
long long judge(long long m){
i=2;
while(i<m){
if(m%i==0){
//cout<<i<<"*";
m/=i;
}
else{
i++;
}
}
return m;//每个正整数的最大质因数
}
int main(){
freopen("bigfact.in","r",stdin);
freopen("bigfact.out","w",stdout);
long long n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].num;
if(maxx<judge(a[i].num)){
maxx=judge(a[i].num);
a[i].zhiyinshu=maxx;
}
}
sort(a+1,a+n+1,mycmp);
cout<<a[n].num<<endl;
return 0;
}
T2 小蜗牛的成绩(85pts)
题目链接
分析:一道不怎么难的模拟。85分做法我顺利的写出来了。但是我好像改不出来100分的做法,如果有人能打出来的话,TELL ME。我会膜拜你的。
其实这个题我歪打正着的漏看了一句话,恰好本来这个题目就是这个意思!看来有些时候还是运气比较好吧。。。
说一下我的思路吧,其实涉及到的是字符串操作+贪心的思想。如果0.x,其中x大于5,那么肯定是要进一位的。后面的是从前往后扫一遍,也要这么处理。然后我们要把小数点+小数点后面的所有数清空。包括最后的后缀0也是要这么处理的。我们怎么处理字符串的运算呢?就可以先-'0’给换成int类型,运算好了再+'0’再存进去。
这样写代码会非常难看。但是,I like.之前听老刘讲过一种可以强制转换把字符串变成int的方法,不过我忘了,有空再补上吧。
My code(85pts)
#include<bits/stdc++.h>
using namespace std;
string s,s1;
int main(){
freopen("grade.in","r",stdin);
freopen("grade.out","w",stdout);
long long n,m;
cin>>n>>m;
cin>>s;
for(int i=1;i<=n;i++){
if(m==0) break; //如果m不能再递减了,直接break。
if(s[i]=='.'){
//找到小数点
if(s[i+1]-'0'>=5&&s[i+1]-'0'<=9){