[蓝蓝计算机考研算法训练二期]-day02

120 阅读1分钟

3.计算字符串中含有的不同字符的个数

编写一个函数,计算字符串中含有的不同字符的个数。字符在ASCII码范围内(0-127,包括0和127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只算一次 例如,对于字符串abaca而言,有a,b,c三个不同的字符,因此输出3. 数据范围1<=n<=500

输入描述

输入一行没有空格的字符串

输出描述

输出字符串中范围在(0-127,包括0和127)字符的种数

代码实现

#include <iostream>
#include <vector>
#include <cstring>
using namespace std;

int main() {
    char s[500];
    vector<int> v(128);
    int sum=0;
    cin >> s;
    int n = strlen(s);
    for(int i=0; i<n; i++){
        v[s[i]] = 1;
    }
    for(int i=0; i<128; i++){
        sum += v[i];
    }
    cout << sum << endl;
    return 0;
}

4.从键盘输入两个数字n,m,求解m,和n的最小公倍数。

代码实现

#include <iostream>
using namespace std;
int small(int n, int m);
int main() {
    int n, m;
    cin >> n;
    cin >> m;
    if(n%m==0||m%n==0){
        n>m?cout << n : cout << m;
    }else {
        cout << m*n/small(n, m);
    }
    
    return 0;
}

int small(int n, int m){
    if(n%m==0){
        return m;
    }else return small(m,n%m);
}