day9:阶乘最后的非0位、算菜价、水果价格、计算机英语翻译

阶乘最后的非0位

问题描述

N的阶乘写作N!表示小于等于N的所有正整数的乘积。阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了。你的任务是找到阶乘最后面的非零位。举个例子,5!=1*2*3*4*5=120所以5!的最后面的非零位是2,7!=1*2*3*4*5*6*7=5040,所以最后面的非零位是4。

个人总结

1. 此题与前面的阶乘最后的0位题目遥相呼应,虽然处理方式有些不同,但是仍然有联系。此题的难点不在算法,而是超时问题,超过100的阶乘即使是计算机也难以存储这么大位数,所以要用后有多少0位的方法,先记录后0位的个数,并且用count存储,在计算阶乘过程中,若%10==0,则除10,并且count--,以此减少计算量,最终转化位string访问最后一位数即可。

2. char

#include <iostream>
//#include <vector>
//#include <set>
#include <string>
//#include <cmath>
//#include <algorithm>
#include <sstream>
//#include <bits/stdc++.h>
using namespace std;

int main() {
    int N;
    cin >> N;
    
    int result = 1;
    int count2 = 0, count5 = 0; 
    
    for (int i = 1; i <= N; ++i) {
        int num = i;
        

        while (num % 2 == 0) {
            count2++;
            num /= 2;
        }
        

        while (num % 5 == 0) {
            count5++;
            num /= 5;
        }
        
        result = (result * num) % 1000000;
    }
    
    int diff = count2 - count5;
    for (int i = 0; i < diff; ++i) {
        result = (result * 2) % 1000000;
    }
    
    while (result % 10 == 0) {
        result /= 10;
    }
    
    cout << result % 10 << endl;
    
    return 0;
}

算菜价

问题描述

妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多少钱真是一笔糊涂帐。现在好了,作为好儿子(女儿)的你可以给她用程序算一下了,呵呵

个人总结

1. 直接定义一个结构体为蔬菜vet,然后用vet结构体定义数组,每一组都有自己的蔬菜名、数量、菜价,循环输入,并用sum自动加总vet[i].num*vet[i].price

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
typedef struct{
	string name;
	double num;
	double price;
}vet;


int main(){
	int ns,nv;
	
	cin >> ns;
	while((ns--)>0){
		int i;
		double sum=0;
		cin >> nv;
		vet vet[nv];
		for(i=0;i<nv;i++){
			cin >> vet[i].name;
			cin >> vet[i].num;
			cin >> vet[i].price;
			sum += (vet[i].num * vet[i].price);
		}
		cout << fixed << setprecision(1) << sum << endl;
		
	}
	
	
	return 0;
} 

水果价格

问题描述

一家水果店出售四种水果,每公斤价格的苹果(代码为a)1.5元,橘子(代码为o)1.4元,香蕉(代码为b)1.48元,菠萝(代码为p)1.08元。编一个程序,使售货员只要在键盘上打入货品的代码及重量,计算机将显示货品名、单价、重量及总价。

个人总结

1. 此题关键在于格式输出,记住两个关键函数

①setw():()内填个数,前面可以用left或者right修饰,表示在之间输出多少个空格,偏向左(右)边

②setprecision():内填个数,右fixed表示保留小数点后几位小数(四舍五入),无fixed表示输出几位有效数

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

int main() {

    double price_a = 1.5, price_o = 1.4, price_b = 1.48, price_p = 1.08;

    double total_a = 0, total_o = 0, total_b = 0, total_p = 0;
    double weight_a = 0, weight_o = 0, weight_b = 0, weight_p = 0;
    int group_count = 0; 
    

    int m;
    while (cin >> m) {

        total_a = 0; total_o = 0; total_b = 0; total_p = 0;
        weight_a = 0; weight_o = 0; weight_b = 0; weight_p = 0;
        
        for (int i = 0; i < m; ++i) {
            char code;
            double weight;
            cin >> code >> weight;
            
    
            switch (code) {
                case 'a':
                    total_a += price_a * weight;
                    weight_a += weight;
                    break;
                case 'o':
                    total_o += price_o * weight;
                    weight_o += weight;
                    break;
                case 'b':
                    total_b += price_b * weight;
                    weight_b += weight;
                    break;
                case 'p':
                    total_p += price_p * weight;
                    weight_p += weight;
                    break;
            }
        }
        
        double sum_price = total_a + total_o + total_b + total_p;
        double sum_weight = weight_a + weight_o + weight_b + weight_p;
        
        if (group_count > 0) {
            cout << endl;
        }
        group_count++;
        

        cout << "       apple  orange banana pineapple sum" << endl;
        
        cout << "price  " 
             << left << setw(7) << fixed << setprecision(2) << total_a << " "
             << left << setw(7) << fixed << setprecision(2) << total_o << " "
             << left << setw(7) << fixed << setprecision(2) << total_b << " "
             << left << setw(10) << fixed << setprecision(2) << total_p 
             << left << setw(7) << fixed << setprecision(2) << sum_price << "  " << endl;
        
        cout << "weight " 
             << left << setw(7) << fixed << setprecision(2) << weight_a << " "
             << left << setw(7) << fixed << setprecision(2) << weight_o << " "
             << left << setw(7) << fixed << setprecision(2) << weight_b << " "
             << left << setw(10) << fixed << setprecision(2) << weight_p 
             << left << setw(7) << fixed << setprecision(2) << sum_weight << "  " << endl;
    }
    
    return 0;
}

计算机英语翻译

第一段

许多人工智能领域的(漏了Much of 大量的)研究可以在上下文中找到特点,在关于建造行为智能化的智能体(都可以围绕“构建能做出智能行为的智能体”)。意味着智能体的执行器做出的行为,必须是符合收集自传感器数据的逻辑。相对应的,我们可以将这些研究通过考虑(分析)智能体对这些数据不同程度的回应来进行分类。

第二段

最简单是回应(响应)就是反映动作(反射动作),这仅仅只是一个对输出数据的perdetermined回应。更高层级的回应需要去获取更高程度的“智能”行为若要实现更“智能”的行为,则需要更高层级的响应)。例如,我们可empower(赋予)一个智能体对它环境的认知程度,并且需要(要求)这个智能体相应的调整它的动作。扔一个棒球的过程只是一个巨大(很大程度上是一个)反映动作,但让一个智能体分析如何或往哪儿仍这个棒球需要对现存的环境进行认知。有多少现实世界的认知可以被储存、升级、获取(访问)、或者极大程度(最终的ultimately)的应用在决策制定的过程,是人工智能领域一个持续存在的挑战性难题。

perdetermined adj.预设的

empower v.(给能量,即)赋予

reflect v.反射

access v.访问、获得

ultimately adj.最终的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值