您的位置:首页 > 其它

oj练习四道题目

2013-05-09 21:23 162 查看


Description

给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123


Input

一个不大于5位的数字


Output

三行第一行 位数第二行 用空格分开的每个数字,注意最后一个数字后没有空格第三行 按逆序输出这个数

#include <iostream>
using namespace std;
int main()
{
int n;
int a,b,c,d,e;
cin>>n;
a=n/10000;
b=(n-10000*a)/1000;
c=(n-10000*a-1000*b)/100;
d=(n-10000*a-1000*b-100*c)/10;
e=n-10000*a-1000*b-100*c-10*d;
if(a!=0)
{
cout<<5<<endl;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<endl;
cout<<e<<d<<c<<b<<a;
}
else if(b!=0)
{
cout<<4<<endl;
cout<<b<<" "<<c<<" "<<d<<" "<<e<<endl;
cout<<e<<d<<c<<b;
}
else if(c!=0)
{
cout<<3<<endl;
cout<<c<<" "<<d<<" "<<e<<endl;
cout<<e<<d<<c;
}
else if(d!=0)
{
cout<<2<<endl;
cout<<d<<" "<<e<<endl;
cout<<e<<d;
}
else
{
cout<<1<<endl;
cout<<e<<endl;
cout<<e;
}

}


Description

输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。


Input

一行字符


Output

统计值

#include <iostream>
#include <string>
using namespace std;
int main()
{
string a;
getline(cin,a);
int zimu=0,shuzi=0,kongge=0,qita=0;
for(int i=0;i!=a.size();i++)
{
if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z')
zimu++;
else if(a[i]>='0'&&a[i]<='9')
shuzi++;
else if(a[i]==' ')
kongge++;
else
qita++;
}
cout<<zimu<<" "<<shuzi<<" "<<kongge<<" "<<qita;
return 0;
}



Description

观察下面的算式:

* * × * * = * * *

它表示:两个两位数字相乘,结果是3位数。其中的星号(*)代表任意的数字,可以相同,也可以不同,只要不是在首位的就可以是0。当然,满足这个要求的算式很多,但我们还有如下的要求:

所有星号所代表的数字全都是奇数。满足这个要求的算式就不多了。

比如:13 x 15 = 195

题目的任务是:编写程序,找到所有可能的情况。


Input


Output

输出的结果中,每个情况占用1行,不需要考虑不同情况如何排序问题。每行的格式如:

13 x 15 = 195

其中乘号用“x”表示。

#include <iostream>
using namespace std;
int main()
{
int a,a1,a2,b,b1,b2,n1,n2,result,result1,result2,result3;
for(a=11;a<=99;a++)
{
n1=a;
a1=n1/10;
a2=n1-a1*10;
for(b=11;b<=99;b++)
{
n2=b;
b1=n2/10;
b2=n2-b1*10;
if(a1%2!=0&&a2%2!=0&&b1%2!=0&&b2%2!=0)

{
result=n1*n2;
if(result/1000==0&&result/100!=0)
{
result1=result/100;
result2=(result-result1*100)/10;
result3=result-result2*10-result1*100;
if(result1%2!=0&&result2%2!=0&&result%2!=0)
cout<<n1<<" "<<"X"<<" "<<n2<<" "<<"="<<" "<<result<<endl;
}
}
}

}
return 0;
}


Description

    30年的改革开放,给中国带来了翻天覆地的变化。2011全年中国手机产量约为11.72亿部。手机已经成为百姓的基本日用品!

    给手机选个好听又好记的号码可能是许多人的心愿。但号源有限,只能辅以有偿选号的方法了。

    这个程序的目的就是:根据给定的手机尾号(4位),按照一定的规则来打分。其规则如下:

    1. 如果出现连号,不管升序还是降序,都加5分。例如:5678,4321都满足加分标准。

    2. 前三个数字相同,或后三个数字相同,都加3分。例如:4888,6665,7777都满足加分的标准。注意:7777因为满足这条标准两次,所以这条规则给它加了6分。

    3. 符合AABB或者ABAB模式的加1分。例如:2255,3939,7777都符合这个模式,所以都被加分。注意:7777因为满足这条标准两次,所以这条标准给它加了2分。

    4. 含有:6,8,9中任何一个数字,每出现一次加1分。例如4326,6875,9918都符合加分标准。其中,6875被加2分;9918被加3分。

    尾号最终得分就是每条标准的加分总和!


Input

第一行是一个整数n(<100),表示下边有多少输入行,接下来是n行4位一组的数据,就是等待计算加分的手机尾号。


Output

n行整数。

#include <iostream>
using namespace std;
int main()
{
int n,i,number;
int a,b,c,d,sum=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>number;
a=number/1000;
b=(number-1000*a)/100;
c=(number-100*b-1000*a)/10;
d=number-10*c-100*b-1000*a;
if(a-b==-1&&b-c==-1&&c-d==-1)
sum=sum+5;
if(a-b==1&&b-c==1&&c-d==1)
sum=sum+5;
if(a==b&&b==c)
sum=sum+3;
if(b==c&&c==d)
sum=sum+3;
if(a==b&&c==d)
sum=sum+1;
if(a==c&&b==d)
sum=sum+1;
if(a==6||a==8||a==9)
sum=sum+1;
if(b==6||b==8||b==9)
sum=sum+1;
if(c==6||c==8||c==9)
sum=sum+1;
if(d==6||d==8||d==9)
sum=sum+1;
cout<<sum;
sum=0;
cout<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: