【题解】洛谷各种字符串问题合集(持续更新中)

洛谷 P1449 后缀表达式

这道题需要手动模拟栈的操作。读入字符,当字符不为终止字符@时,如果读入的是数字就用now记录下它的值,如果读入的是 . 就将得到的数字值放到栈顶,并清空now。当读到运算符时,就拿栈顶元素下面的第一个元素和栈顶元素进行加减乘除的操作,并将栈顶清空,元素退栈,最后输出栈内剩下的唯一元素即可。要用long long

#include
#include
#include
using namespace std;
long long ans[1010];
int main()
{
	long long len=0,now=0;
	char ch;
	while((ch=getchar())!='@')
	{
		if(ch>='0'&&ch<='9')
		{
			now*=10;
			now+=ch-'0';
		}
		else if(ch=='.')
		{
			ans[++len]=now;
			now=0;
		}
		else if(ch=='+')
		{
			ans[len-1]+=ans[len];
			ans[len]=0;
			len--;
		}  
		else if(ch=='-')
		{
			ans[len-1]-=ans[len];
			ans[len]=0;
			len--;
		}  
		else if(ch=='*')
		{
			ans[len-1]*=ans[len];
			ans[len]=0;
			len--;
		}  
		else if(ch=='/')
		{
			ans[len-1]/=ans[len];
			ans[len]=0;
			len--;
		}  
	}
	cout<

洛谷P1914 小书童——密码

水题 然而放上来的原因是因为第一次我忘了取mod。。。记得读入字符后将其变为数字加上n后取mod

#include
#include
#include
using namespace std;
int main()
{
	int n;
	cin>>n;
	char ch;
	while(cin>>ch)
	{
		int ans=ch-'a'+n;
		ans%=26;
		printf("%c",ans+'a');
	}
	return 0;
}

洛谷 P2614 计算器弹琴

题目比较繁琐,然而仔细想想还是能模拟出来的。我这道题是读入字符来解决的,以空格为界限(读入字符串也可以,不过如果懒得转换的话这道题给的n是没有用的)。记录下没读到空格时字符的长度,并初始化w=0.对每个字符进行处理,如果读到空格或换行就无视,如果读到“(”就代表音符拍子要变为原来的二分之一,也就是给w++。对于“)”同理w--。如果读到的是延长字符“.”,就把记录节拍答案的变量加上自身的二分之一,如果是其他的情况就加上二分之一的w次方。最后输出整型,算得一共要多少秒演奏完曲子。

#include
#include
#include
#include
using namespace std;
char a[110];
double time=0;
int main()
{
	int n,t,len,w=0;
	cin>>n>>t;
	for(;scanf("%s",&a)==1;)
	{
		len=strlen(a);
		w=0;
		for(int j=0;j

洛谷P1538 迎春舞会之数字舞蹈

https://blog.csdn.net/QiaoRuoZhuo/article/details/52227422

将数字的七个组成部分记录并打印,注意k的大小。

 

(To be continued...)

你可能感兴趣的:(题解,字符串,模拟)