凉心的比赛(003)
顺序比较混乱,是按照补题顺序来的。
A 签到
思路:
由题意可知,11->1。所以最终的输出结果只会有一个1;
而0的数目不定。因此本题输出0为主要突破口。
一开始莫名其妙老是卡住。就是不输出结果。这个题目有很多问题,比如数据的输入只能用字符类型,而不能用整数类型数组或者整数类型变量。
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n;
cin>>n;
int sum=0;
for(int i=0;i<n;i++)
{
char x;
cin>>x;
if(x-'0'==1)sum++;
}
if(sum==0)printf("0\n");
else
{
printf("1");
for(int i=1;i<=n-sum;i++)
printf("0");
}
return 0;
}
E 签到
思路:
各个领导人必须有相同数目的员工。否则不成立!
#include<stdio.h>
int main()
{
int n,i,t,count=0;
scanf("%d",&n);
for(i=1;i<n;i++)
{
t=n-i;
if(t%i==0)
count++;
}
printf("%d",count);
return 0;
}
F 穿越铁门题目
思路:
判断小人有没有穿过边界线,如果穿过了,那么就要收费。
判断的依据是U和R的关系。如果是U和R的走的步数相同,并且前一步和后一步的方向相同,那么就要收费了~
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int coin=0,n,x=0,y=0,i;
string s;
cin>>n;
cin>>s;
if((n<=2)&&(n>=1))
cout<<"0";
else if(n>2&&n<5)
cout<<"1";
else
{
for(i=0;i<n;i++)
{
if(s[i]=='U')
y++;
if(s[i]=='R')
x++;
if (x == y && s[i] == s[i + 1])//要考虑穿过来的话没必要考虑x和y 直接看U R
coin++;
}
cout<<coin;
}
return 0;
}