洛谷初级字符串题解x2

以下为题解x2

P1553 数字反转升级版

题目链接

大致过程:
5cf9e84e3e54991686

代码-》

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
33
34
35
#include<bits/stdc++.h>

using namespace std;

int main()
{
string s;
char p=0;
int end=0;
cin>>s;
for(int i=0;i<s.size();i++)
{
if(s[i]>='0'&&s[i]<='9') end++;
else
{
p=s[i];
break;
}
}
int x=end;
end--;
while(s[end]=='0'&&end>0) end--;
for(int i=end;i>=0;i--)
cout<<s[i];
if(p==0) return 0;//如果~~~就退出了
else
if(p=='%') {cout<<p;return 0;}
else cout<<p;
int m=s.size()-1;
while(s[x+1]=='0'&&x<m-1) x++;
while(s[m]=='0'&&m>x+1) m--;
for(int i=m;i>x;i--)
cout<<s[i];
return 0;
}

P1200

just判断一下

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>

using namespace std ;

string a , b ;
int ans = 1 , num = 1 ;

main(){
cin >>a>>b;
for( int i = 0 ; i < a.length() ; i ++ ) ans *= a[i] - 64;
for( int i = 0 ; i < b.length() ; i ++ ) num *= b[i] - 64;
ans %= 47 , num %= 47 ;
if( ans == num ) cout << "GO" ;
else cout << "STAY" ;
return 0 ;
}

注意点:一直乘过去的话,初始化要成1;如果是0就会一直是0(调试许久)

And 似乎字符串有两类(我知道的)处理方法欸,有种就是char s[]然后strlen(s);之类的 ;还有一种就是用string 然后 s.length()之类的。

So 我改用那种比较好呢?

注:之所以今天才发是因为markdown 编辑器坏了,so今天才发,(话说这两天github下载怎么这么慢啊!!!!!!)

-------------本文结束,感谢您的阅读-------------