当前位置: 代码迷 >> 综合 >> 杭电OJ100题——2030-2032(C++版)
  详细解决方案

杭电OJ100题——2030-2032(C++版)

热度:41   发布时间:2023-12-15 13:35:35.0

汉字统计

Problem Description

统计给定文本文件中汉字的个数。

 Input

输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本。

 Output

对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。

[Hint:]从汉字机内码的特点考虑~

 

 Sample Input

2 
WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa! 
马上就要期末考试了Are you ready?

 Sample Output

14 
9
#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;int main(){int n;cin>>n;getchar();while(n--){string str;getline(cin,str);int sum=0;for(int i=0;i<str.size();i++)if(str[i]<0||str[i]>127)sum++;cout<<sum/2<<endl;}
}

 

进制转换


Problem Description

输入一个十进制数N,将它转换成R进制数输出。

 Input

输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。

 Output

为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

 Sample Input

7 2 
23 12 
-4 3

 Sample Output

111 
1B 
-11
#include<stdio.h>
#include<cmath>
using namespace std;int main(){int n,r;while(scanf("%d%d",&n,&r)!=EOF){char ans[40];int a_size=0;int k= n;do{//计算该位数字int f = abs(n);int x = f%r;//将数字转换成字符ans[a_size++] = (x<10)? x+'0':x-10+'A';n /= r;}while(n);if(k<0)ans[a_size++] = '-';for(int i=a_size-1;i>=0;i--)printf("%c",ans[i]);printf("\n");}
}

 

杨辉三角


Problem Description

还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

 Input

输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。

 Output

对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。

 Sample Input

2 3

 Sample Output

1 
1 1 1 
1 1 
1 2 1

 

#include<stdio.h>
#include<iostream>
using namespace std;int main(){int n;while(scanf("%d",&n)!=EOF){int **arr = new int*[n];for(int i=0;i<n;i++)arr[i] = new int[n];for(int i=0;i<n;i++)for(int j=0;j<i+1;j++){if(j==0||j==i)arr[i][j]=1;elsearr[i][j]=arr[i-1][j]+arr[i-1][j-1];}for(int i=0;i<n;i++){for(int j=0;j<i;j++)cout<<arr[i][j]<<" ";cout<<arr[i][i]<<endl;}cout<<endl;}
}