2-0 字符串三角形
给定3个字符串,第一个字符串的长度定义为字母的个数(包含大小写字母),第二个字符串的长度定义为数字的个数(阿拉伯数字0-9),第三个字符串的长度定义为非空格字符的个数。注意:字符串中可能含有空格,遇到回车认为一个字符串输出完毕,回车不算在内。
如果这三个字符串的长度可以组成一个三角形,那么输出1,如果不能组成三角形,输出0.
例如输入:
abcdeF 2de //长度为8
12de ds 321 111 //长度为8
22 FFFd#!@ 3 //长度为10
输出为:
1
2-1 如果可以构成三角形,输出1之后还要输出三角形的类型,如果不能,则仅仅输出0。
这里规定三角形的类型有:A 直角三角形 B 等腰三角形 C等腰直角三角形 D 等边三角形 E其余三角形
如果满足等腰直角三角形,则仅输出C,不必输出A B(仅输出最难满足条件的区间),同理,如果满足D则不需要输出B。
则刚才的输出为
1 B
代码1:(自己写的):
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
char c;
int len1=0,len2=0,len3=0;
while((c=getchar())!='\n')
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
len1++;
}
while((c=getchar())!='\n')
{
if(c>='0'&&c<'9')
len2++;
}
while((c=getchar())!='\n')
{
if(c!=' ')
len3++;
}
cout << len1<<" "<<len2<<" "<<len3<< endl;
if(len1>len2) swap(len1,len2);
if(len1>len3) swap(len1,len3);
if(len2>len3) swap(len2,len3);
if((len1+len2)>len3&&(len1+len3)>len2&&(len2+len3)>len1)
{
printf("1");
if((len1==len2)&&(len2==len3)) printf("D等边三角形");
else if((len1==len2)||(len1==len3)||(len2==len3))
if(len1*len1+len2*len2==len3*len3)
printf("C等腰直角三角形\n");
else
printf("B等腰三角形");
else if(len1*len1+len2*len2==len3*len3)
printf("A直角三角形");
else
printf("E其他三角形");
}
else
printf("0");
return 0;
}
代码2:(西交wrong):
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
using namespace std;
const int maxn = 100000;
typedef pair<int,int> P;
int main()
{
char c;
int len1,len2,len3;
len1=len2=len3=0;
while((c=getchar())!='\n')
if((c>='A'&&c<='Z')||(c>='a'&&c<='z')) len1++;
while((c=getchar())!='\n')
if(c>='0'&&c<='9') len2++;
while((c=getchar())!='\n')
if(c!=' ') len3++;
if(len1<len2) swap(len1,len2);
if(len1<len3) swap(len1,len3);
cout<<len1<<" "<<len2<<" "<<len3<<endl;
if(len2+len3>len1)
{
printf("1\n");
if(len1==len2&&len2==len3) cout<<'D'<<endl;
else if(len1==len2||len1==len3||len2==len3)
if(len1*len1+len2*len2==len3*len3||
len1*len1+len3*len3==len2*len2||
len2*len2+len3*len3==len1*len1)
cout<<'C'<<endl;
else
cout<<'B'<<endl;
else
if(len1*len1+len2*len2==len3*len3||
len1*len1+len3*len3==len2*len2||
len2*len2+len3*len3==len1*len1)
cout<<'A'<<endl;
else
cout<<'E'<<endl;
}
else
printf("0\n");
return 0;
}
(感谢西交wrong学长提供以上题目练习)