【题目】
【题解】
当11点到12点的时候计入碰撞次数为0,其他都为1。
【代码】
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <map>
#include <list>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <iostream>
#define go(i,a,b) for(int i=a;i<=b;i++)
#define og(i,a,b) for(int i=a;i>=b;i--)
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
const int inf=0x3f3f3f3f;
typedef long long ll;
main()
{
int t,a,b; scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
int ans=0;
go(i,a,b-1)
{
if(i==11||i==23) continue;
ans++;
}
printf("%d\n",ans);
}
}
【题目】
【题解】
注意‘-’的左右两边都是小写字母或者数字且左边小于右边才进行转换。
【代码】
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <map>
#include <list>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <iostream>
#define go(i,a,b) for(int i=a;i<=b;i++)
#define og(i,a,b) for(int i=a;i>=b;i--)
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
const int inf=0x3f3f3f3f;
typedef long long ll;
int f(char a)
{
if(a>='0'&&a<='9') return 1;
if(a>='a'&&a<='z') return 2;
return 0;
}
main()
{
int p1,p2,p3;
string a;
while(~scanf("%d%d%d",&p1,&p2,&p3))
{
cin>>a; int l=a.size();
go(i,0,l-1)
{
if(a[i]=='-'&&f(a[i-1])==f(a[i+1])&&a[i-1]<a[i+1]&&f(a[i-1])&&f(a[i+1]))
{
if(p1==1||p1==2)
{
if(f(a[i-1])==1)
{
if(p3==1)
{
for(int ii=a[i-1]+1;ii<a[i+1];ii++)
for(int j=0;j<p2;j++)
printf("%c",ii);
}
else
{
for(int ii=a[i+1]-1;ii>a[i-1];ii--)
for(int j=0;j<p2;j++)
printf("%c",ii);
}
}
else
{
int k=0;
if(p1==2) k='A'-'a';
if(p3==1)
{
for(int ii=a[i-1]+1;ii<a[i+1];ii++)
for(int j=0;j<p2;j++)
printf("%c",ii+k);
}
else
{
for(int ii=a[i+1]-1;ii>a[i-1];ii--)
for(int j=0;j<p2;j++)
printf("%c",ii+k);
}
}
}
else
{
int t=a[i+1]-a[i-1]-1;
t*=p2;
while(t--) cout<<'*';
}
}
else cout<<a[i];
}
cout<<endl;
}
}