LeetCode刷题计划---day2

07

LeetCode刷题计划---day2_第1张图片

#include 
#include  // 头文件用于控制输出格式
using namespace std;

int main() {
    const int n = 5; // 等级个数
    double grade[n] = {4.0, 3.0, 2.0, 1.0, 0.0}; // 每个等级对应的分数

    string input;
    while (getline(cin, input)) { // 读入一行输入数据
        double total_grade = 0; // 总分数
        int total_courses = 0; // 总课程数
        bool invalid_input = false; // 是否有非法输入
        int len = input.length();
        for (int i = 0; i < len; i += 2) { // 每两个字符为一门课程
            char c = input[i];
            int idx;
            if(c == 'A')
                idx=0;
            else if (c == 'B')
                idx=1;
            else if (c == 'C')
                idx=2; 
            else if (c == 'D')
                idx=3;
            else if(c == 'F')
                idx=4;
            else {
                invalid_input = true;
                break;
            }
            
            total_grade += grade[idx]; // 累计总分数
            total_courses++; // 累计总课程数
        }

        if (invalid_input) {
            cout << "Unknown" << endl;
        } else {
            double gpa = total_grade / total_courses; // 计算平均绩点
            cout << fixed << setprecision(2) << gpa << endl; // 输出结果,保留两位小数
        }
    }

    return 0;
}

这里是读取两个字符为一门课程,因为还有空格。

fixed 是 头文件中的一个输出格式控制符,用于指定浮点数的输出格式。当使用 fixed 后,浮点数将以固定的小数位数进行输出。

在这段代码中,cout << fixed << setprecision(2) << gpa << endl; 的意思是将 gpa 输出为一个小数点后保留两位的浮点数。即使 gpa 是整数,也会按照保留两位小数的格式输出。

grade = [4.0, 3.0, 2.0, 1.0, 0.0]  # 每个等级对应的分数

while True:
    try:
        input_str = input()  # 读入一行输入数据
        if not input_str:  # 如果输入为空,则退出循环
            break
        
        total_grade = 0  # 总分数
        total_courses = 0  # 总课程数
        invalid_input = False  # 是否有非法输入
        
        for i in range(0, len(input_str), 2):  # 每两个字符为一门课程
            c = input_str[i]
            if c == 'A':
                idx = 0
            elif c == 'B':
                idx = 1
            elif c == 'C':
                idx = 2
            elif c == 'D':
                idx = 3
            elif c == 'F':
                idx = 4
            else:
                invalid_input = True
                break
            
            total_grade += grade[idx]  # 累计总分数
            total_courses += 1  # 累计总课程数
        
        if invalid_input:
            print("Unknown")
        else:
            gpa = total_grade / total_courses  # 计算平均绩点
            print('{:.2f}'.format(gpa))  # 输出结果,保留两位小数
    except:
        break

注意python中是用列表或者字典

grades = [4.0,3.0,2.0,1.0,0.0]
或者
grade = {‘A’: 4.0, ‘B’: 3.0, ‘C’: 2.0, ‘D’: 1.0, ‘F’: 0.0}

while True:
    try:
        s = input().split()
        grade = {'A': 4.0, 'B': 3.0, 'C': 2.0, 'D': 1.0, 'F': 0.0}
        total_courses = 0
        total_grade = 0.0
        flag = False
        
        for i in range(len(s)):
            if s[i] == 'A':
                idx = 'A'
            elif s[i] == 'B':
                idx = 'B'
            elif s[i] == 'C':
                idx = 'C'
            elif s[i] == 'D':
                idx = 'D'
            elif s[i] == 'F':
                idx = 'F'
            else:
                flag = True
                break
            total_courses += 1
            total_grade += grade[idx]

        if flag:
            print("Unknown")
        else:
            print(total_grade / total_courses)

    except EOFError:
        break


08

LeetCode刷题计划---day2_第2张图片
LeetCode刷题计划---day2_第3张图片

#include 
using namespace std;


int main()
{
    int n;
   
    while(cin>>n)
    {
       if(n==0)
            break;
        else
        {
            int a[n];
            int sum=0;
            for(int i = 0;i<n;i++)
            {
                cin>>a[i];
                sum = a[i]+sum;
            }
            int c=0;
            c = sum / n;
 
            int sum1=0;
     
            for(int j = 0;j<n;j++)
            {
                if(a[j]>c)
                {
                    a[j]=a[j]-c;
                }
     
                else
                    a[j]=0;
                    
                sum1=a[j]+sum1;
            }
            cout<<sum1<<endl;
            cout<<endl;


        }
   
   }
    
    return 0;
}
while True:
    try:
        n = int(input())
     
        ls = input().split()
        
        nums=list(map(int,ls))
       
        ans = sum(nums)
        avg = ans//n
        sum1 = 0
        for i in range(n):

            if nums[i] > avg:
                nums[i]=nums[i]-avg
            else:   
                nums[i]=0
            sum1 = nums[i]+sum1
        print(sum1)
        print()
        
    except:
        break


将计算平均值的变量名改为 avg,并使用整除符号 // 来确保平均值是整数。另外,在比较每个教室高度差时,我们使用原始数据列表 nums 进行比较,而不是 ls 列表中的元素。


09

LeetCode刷题计划---day2_第4张图片

#include 
using namespace std;

int main()
{
    string s;
    while(getline(cin,s))
    {
        int sum = 0;
        for(int i = 0 ;i<s.size();i++)
        {
            int num = s[i] - '0';
            if ((num %2)==0)
                sum=sum+num;
        }
        
        cout<<sum<<endl;
        cout<<endl;
        
    }
    
    return 0;
}

    
while True:
    try:
        s = input().strip()
        if not s:
            break  # 如果输入为空,则退出循环
        sums = 0
        for c in s:
            if c.isdigit() and int(c) % 2 == 0:  # 判断字符是否为数字和是否为偶数
                sums += int(c)
        print(sums)
        print()
    except:
        break

0 的 ASCII 码是 48。

#include 
using namespace std;


int main()
{
    
    string s;
    while(getline(cin,s)){
     
        int len;
        len = s.length();
        
        int sum1 = 0;
        for (int i =0;i<len;++i)
        {
            if((int(s[i])%2)==0)
                s[i]=s[i];
            else
            {
                 s[i] = '0';
            }
            
            
               
            sum1 = int(s[i])-48+sum1;
            
            
        }
        cout<<sum1<<endl;    
        cout<<endl;
    }
  
    return 0;
}

在用字符串转整型的时候记得-‘0’
s = list(map(int,input())) 中 input输入的都是字符串,然后把它变成列表,然后再int


10

LeetCode刷题计划---day2_第5张图片
LeetCode刷题计划---day2_第6张图片

#include 
using namespace std;


int main()
{
    
    int M,K;
    int n;
    int day;
    while(cin>>M>>K)
    {
        int m;
        if(M==K&&M==0)
        {
            break;
        }
        else
        {
           n = M/K;//充值送的天数 奖励的  4
           day = n+M;//4+13=17
           m = n+M%K;//剩余话费+奖励的  4+1
           while(m>=K)
           {
              day = day+m/K;//1+17+1
              m = m/K+m%K;  //1+2  //1+0
              
           }
            cout<<day<<endl;
           
        }
    }
    
    
    
    
    return 0;
}
while True:
    try:
        M,K = map(int,input().split(' '))
        if M==K==0:
            break
        else:
            day = M+M//K  #13+4=17
            
            m = M%K+M//K  #剩下的钱  1+4
            
            while(m>=K):
                day = day+m//K #17+1   
                
                m = m//K+m%K  #1+2
           
            print(day)
        
    except:
        break

这里要用循环

你可能感兴趣的:(leetcode,算法,职场和发展)