精华内容
下载资源
问答
  • most of them, along with Klein and his factory, were destroyed in World War II. Fortunately old Brumbaugh from research knew Klein's secrets and wrote them down before he died. A Klein safe has two ...
  • 1011 World Cup Betting (20分) 题目链接:PAT A 1011 思路分析:嗯…这道题就很迷,我不知道它那个公式是怎么来的,...就是找每行中赔率最大的输出它所对应的的字母,然后那个公式计算收益就可以了。 AC代码: #...

    1011 World Cup Betting (20分)

    题目链接:PAT A 1011
    在这里插入图片描述
    思路分析:嗯…这道题就很迷,我不知道它那个公式是怎么来的,开始还以为是按照题意,不同的数据对应不同的公式,后来才发现所有数据都是那个公式,但是我不太理解(原谅笨笨的我,大家有明白的别忘了告诉我啊~),但是不影响做题。就是找每行中赔率最大的输出它所对应的的字母,然后用那个公式计算收益就可以了。

    AC代码:

    #include<iostream>
    using namespace std;
    int main() {
    	char str[4] = {'W', 'T', 'L'}; //方便输出最大赔率对应下标 
    	double a, max[3] = {0}; //用于记录最大赔率 
    	int index; //最大赔率下标 
    	for(int i = 0; i < 3; i++) {
    		for(int j = 0; j < 3; j++) {
    			scanf("%lf", &a);
    			if(a > max[i]) {
    				max[i] = a; //更新最大赔率 
    				index = j; //更新最大赔率下标 
    			} 
    		}
    		printf("%c ", str[index]);
    	}
    	printf("%.2f", (max[0] * max[1] * max[2] * 0.65 - 1) * 2); //计算公式 
    	return 0;
    }
    
    展开全文
  • 欧拉公式求长期率的matlab代码Versor 鼠标旋转地球仪。 天真的方法使用mouse.x和mouse.y作为经度和纬度的代理。 当旋转角度较小时,它可以工作,但是尝试将地球仪“倒置”,突然将鼠标向左移动,则地球仪向右旋转...
  • 要求求得最大收益,最大收益根据题目中的那个公式进行计算。 分析: 分别定义三个变量,w, t, l。在定义一个变量保存乘积。循环三次,每次输入这三个数,然后进行比较,然后输出最大数字对应的字母,每次乘积乘以...

    原文链接

    题意:

    输入三组数据,每组数据三个数,第一个数字代表W(赢), T(平局), L(输)。要求求得最大收益,最大收益根据题目中的那个公式进行计算。

    分析:

    分别定义三个变量,w, t, l。在定义一个变量保存乘积。循环三次,每次输入这三个数,然后进行比较,然后输出最大数字对应的字母,每次用乘积乘以最大数并赋值给乘积变量。最后根据题目公式输出结果,注意保留两位小数。

    代码:

    #include<iostream>
    using namespace std;
    int main()
    {
        float result=1.0;
        float w,t,l;
        for(int i=0;i<3;++i)
        {
            cin>>w>>t>>l;
            if(w>t&&w>l)
            {
                cout<<'W'<<' ';
                result*=w;
            }else if(t>w&&t>l)
            {
                cout<<'T'<<' ';
                result*=t;
            }else if(l>w&&l>t)
            {
                cout<<'L'<<' ';
                result*=l;
            }
        }
        printf("%.2f",(result*0.65-1)*2);
        return 0;
    }
    
    展开全文
  • 首先阐述下程序运行的基本原理:计算机CPU只执行二进制指令,我们使用的开发语言开发出的程序最终由相应的编译器编译为二进制指令,二进制中包含程序相关的数据、代码指令(我们最常见的公式描述就是:程序=数据+...

    转载自 http://www.tsingfun.com/html/2015/dev_0804/hello_os_word_my_first_os.html

    首先阐述下程序运行的基本原理:计算机CPU只执行二进制指令,我们使用的开发语言开发出的程序最终由相应的编译器编译为二进制指令,二进制中包含程序相关的数据、代码指令(用我们最常见的公式描述就是:程序=数据+算法)。CPU读取相应的指令、数据后开始执行,执行后的结果输出到外部设备,如屏幕、磁盘等。整个过程中,CPU发挥最为核心的作用,与其他设备一起完成程序的执行、输出。

    OS本身也是程序,它的运行也是如此,开机后从指定地址处(0x7c00),开始执行指令。先看看本节例子最终运行效果:

    593237-20180530134307116-1229642.png

    编译运行环境:
    nasm:Inter x86汇编编译工具,用户将我们的汇编代码编译为二进制。(下载地址 http://www.tsingfun.com/html/2015/soft_0804/nasm_asm.html)
    Bochs:运行os的虚拟机工具,模拟加载我们生成的软盘映像,并运行os。(下载地址 http://www.tsingfun.com/html/2015/soft_0804/Bochs_Lightweight_VirtualMachine.html)

    代码如下:

    ;--------------------------------------------------------------
    ; 平凡OS(Pf OS) 一个最简单的OS
    ; Author : tsingfun.com
    ;--------------------------------------------------------------
    
    ; FAT12引导扇区
        ORG     0x7c00          ;引导开始地址,固定的,主板BIOS决定,本条指令只是申明,不占字节(有兴趣的可以单独编译这条指令,然后查看二进制,文件0k)
        JMP     _START          ;CPU执行的第一条指令,就是跳转到_START地址处(这里是标签,实际编译后_START是有一个相对地址的)
        TIMES   3-($-$$) NOP    ;NOP:一个机器周期。$:当前地址,$$:首地址。因为以上信息必须占3个字节,所以不足的部分用nop指令填充,
                                    ;具体nop占用几个字节请读者使用二进制查看工具自行验证。
    
        DB      "PFOSBEST"      ; 标识(公司、品牌等)8个字节
        DW      512             ; 每扇区字节数
        DB      1               ; 每簇扇区数
        DW      1               ; Boot内容占几个扇区
        DB      2               ; 共有多少FAT表
        DW      224             ; 根目录文件数最大值
        DW      2880            ; 扇区总数
        DB      0xf0            ; 介质描述符
        DW      9               ; 每FAT扇区数
        DW      18              ; 每磁道扇区数
        DW      2               ; 磁头数(面数)
        DD      0               ; 隐藏扇区数
        DD      2880            ; 若上面“扇区总数”为0,则这个值记录扇区总数
        DB      0,0,0x29        ; 中断13的驱动器号;未使用;拓展引导标记
        DD      0xffffffff      ; 卷序列号
        DB      "PFOS v1.0.0"   ; 卷标(11个字节)
        DB      "FAT12   "      ; 文件系统类型(8个字节)  
        ;---------------------------------------------------------------------
        ; 448个字节,引导代码、数据及其他填充字符
        TIMES   18  DB 0
        
    _START:
        MOV     AX, 0           ;AX:累加寄存器,CPU内置的16位寄存器,最为常用,可以用于存储运行的中间结果,此处清零
        MOV     SI, MSG         ;SI:(source index)源变址寄存器,常用来存储待操作的数据的首地址,此处指向数据区的字符串
    _LOOP:                      ;循环指令开始
        MOV     AL, [SI]        ;[]取地址中的内容,AL是AX的低8位,所以取8bit,即1字节,字符串的ASCII。
        ADD     SI, 1           ;字符串往后移动一个字节
        CMP     AL, 0           ;判断当前取出的ASCII是否是0,
        JE      _END            ;JE:Equal则Jmp,等于零表示字符串显示完了,结束。
        MOV     AH, 0x0e        ;调用系统10h中断显示ASCII字母,AH,BX指定显示模式及参数(详见:http://www.tsingfun.com/html/2015/dev_0804/570.html)
        MOV     BX, 15
        INT     0x10
        JMP     _LOOP           ;继续下一个字符的显示
    _END:
        JMP     $               ;跳到当前的地址,当然就陷入无限循环啦,此处为了让程序停在此处。
    
    ;数据区,就是待输出的字符串信息
    MSG                     DB  0x0a, "----------------------------------------------", 0x0d, 0x0a, \
                                      "|              Hello, OS World!              |", 0x0d, 0x0a, \
                                      "----------------------------------------------", 0x0d, 0x0a, 0x0
    
        TIMES   510-($-$$)  DB 0
        DW      0xaa55          ; 结束标志
        ;----------------------------------------------------------------------
        
    ; FAT数据区
        DB      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
        TIMES   4600        DB 0
        DB      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
        TIMES   1469432     DB 0

    其中,主要的步骤代码中都有详尽的注释,如有任何问题,请移步至论坛《深入OS》板块发帖讨论。

    编译执行过程:
    打开dos窗口,进入源码所在目录,执行命令nasm boot.asm -o pfos.img:

    593237-20180530134321756-1687587998.png

    同目录下生成一个"pfos.img"软盘映像文件,接下来只需要把它装载到虚拟机运行即可,当然有条件的话可以实际写入老式的软盘用真机运行,结果是一样的。

    同目录下新建一个“pfos.bxrc” Bochs配置文件,内容如下:

    #how much memory the emulated machine will have
    megs:4
    
    #filename of ROM images
    romimage:file=$BXSHARE\BIOS-bochs-latest,address=Oxf0000
    vgaromimage: file=$BXSHARE\VGABIOS-elpin-2.40
    
    #what disk images will be used
    floppya:1_44="pfos.IMG",status=inserted
    
    #Choose the boot disk
    boot:a
    
    #where do we send log messages?
    #log:bochsout.txt

    双击“pfos.bxrc”启动Bochs运行即可启动我们自己写的os了。
    源码下载:http://www.tsingfun.com/uploadfile/2016/0628/hello os world.zip

    接下来解释一下运行原理:

    首先,软盘大小是1.44M(这个是固定的),所以我们在程序中指定它为1,474,560 字节,除了程序本身的指令、数据外,不足的部分全部补零。

    TIMES 1469432 DB 0 就是此处开始写1469432个字节的0。

    软盘采用的是FAT12文件格式,我们现在的常见的文件格式有FAT32、NTFS、EXT3等,FAT12是早期的一种文件格式。文件格式是文件格式化存储的一种算法,比如我们要将一个文件存储到软盘(磁盘)上,有些人可能会想我直接从地址0开始存储,直到结束,那么文件名、文件大小、创建时间等其他信息怎么存?紧接着后面继续存储么?那该给各部分分配多少字节空间?先不说后续查找文件的效率,这种存储方法无章可循会完全失控,是不行的方案。

    文件格式化算法就解决了此类问题,而且兼顾文件的高效率查找。基本原理就是给软盘(磁盘)分区:FAT区、目录区、数据区,存储文件时先存储文件基本信息到目录区,然后文件的数据按照一定格式存储到数据区,目录区中有数据区中文件数据的地址。

    这里只简单介绍一下FAT12格式,后续篇章会深入解析每个字节代表的含义。

    我们来看看我们生成的映像里面到底有什么东西?这时我们需要用到二进制查看工具WinHex,点此下载 http://www.tsingfun.com/html/2015/soft_0804/WinHex.html 。

    593237-20180530134411100-25708173.png

    以上看到的是二进制静态代码,实际运行中各指令的地址都是动态变化的,下来一起借助Bochs的debug功能来一探究竟。
    我们双击“pfos.bxrc”默认是以运行模式启动Bochs,实际上我们应该启动bochsdbg.exe,因此写个简单的批处理脚本启动它吧,如下:

    @echo off
    
    SET BXSHARE=C:\Program Files (x86)\Bochs-2.5
    
    if %PROCESSOR_ARCHITECTURE% == x86 (    
        SET BXSHARE=C:\Program Files\Bochs-2.4.6
    )
    
    "%BXSHARE%"\bochsdbg -q -f "pfos.bxrc"

    双击脚本,启动debug模式,如下:
    593237-20180530134418587-72037203.png

    Bochs常用的debug命令如下:

    b 0x...   断点命令,指定地址处调试
    info break  显示当前断点信息
    c    继续执行
    s    步入执行
    n    单步执行
    info cpu   查看cpu寄存器(可分别执行 r/fp/sreg/creg)
    print-stack   打印堆栈
    xp /长度 地址     显示地址处内容(xp:物理地址,x:线性地址)
    u 起始地址 结束地址   反汇编一段代码
    trace on    反汇编执行的每条指令
    trace-reg on   每执行一条指令都打印一下cpu信息
    exit   退出调试

    大家有兴趣的话可以调试下,然后看看每步骤寄存器值的变化。

    总结:本篇主要是让大家对操作系统有个整体概念上的认识,揭开os神秘的面纱,从底层调试到运行,每个过程都真真切切展现在大家面前。至于汇编指令、地址寻址暂时不懂的话,也不要紧,后续章节会继续作详细阐述,力求使大家在不断的运行、调试过程中逐渐熟悉并掌握汇编及计算机底层技术。

    转载于:https://www.cnblogs.com/Chorder/p/9110396.html

    展开全文
  • Welocome to Xiang’s world~ 兄弟姐妹们!如果在翻看过程中发现错误,请纠正博主哦~ 题目♥ 中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是...

    用Java解决:三天打鱼两天晒网问题

    Welocome to Xiang’s world~

    兄弟姐妹们!如果在翻看过程中发现错误,请纠正博主哦~

    在这里插入图片描述

    题目♥

    中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用java语言实现程序解决问题。

    分析♥

    ① 计算从2010年1月1日开始至指定日期共有多少天;(公式:总天数=整年总天数+输入年之后天数)
    ② “打鱼”和“晒网”的周期5天,所以要将计算出的天数取余5;(小学知识哦~)
    ③ 再根据余数判断他是在“打鱼”还是在“晒网”;
    若{余数为1,2,3,则他是在“打鱼”}
    否则{在“晒网”}

    敲黑板!注意事项♥

    ① 用户输入的年月日是否满足规范呢?
    ② 闰年怎么计算呢?
    ③ 用户输入的年份距离2010年1月1日有多少个闰年?
    ④ 用户输入的年份是否为闰年?用户输入当年月份是否含有满2月?有的话是29还是28呢?

    代码♥

    在这里插入图片描述

    package fish1;
    
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            /**
            * Description: <br/>
            * @author: xiang<br/>
            * @date: 2021/3/21 22:25<br/>
            * @param:[args]<br/>
            * @return:void
            */
            //输入年,月,日
            Scanner scanner = new Scanner(System.in);
            System.out.println("输入年:");
            int year = scanner.nextInt();
            System.out.println("输入月:");
            int month = scanner.nextInt();
            System.out.println("输入日:");
            int day = scanner.nextInt();
    
            if (validate(year, month, day)) {
                System.out.println("校验成功");
                judge(year, month, day);
            } else {
                System.out.println("校验失败");
            }
    
        }
    
        public static boolean validate(int year, int month, int day) {
            /**
            * Description: <br/>
            * @author: xaing<br/>
            * @date: 2021/3/21 22:26<br/>
            * @param:[year, month, day]<br/>
            * @return:boolean
            */
            //判断输入的年,月,日是否符合常理
            if ((year > 2009) && (month > 0 && month < 13) && (day > 0 && day < 32)) {
            //判断平月格式是否正确
                if (month == 4 || month == 6 || month == 9 || month == 11) {
                    if (day > 30) {
                        return false;
                    }
                } else if (month == 2) {
                    if(year%4==0 && year%100!=0 || year%400==0){
                        if(day>=30){
                            return false;
                        }
                    }else{
                        if(day>=29){
                            return false;
                        }
                    }
                }
            } else {
                return false;
            }
            return true;
        }
    
    
        public static void judge(int year, int month, int day) {
            /**
            * Description: <br/>
            * @author: xiang<br/>
            * @date: 2021/3/21 22:26<br/>
            * @param:[year, month, day]<br/>
            * @return:void
            */
            int x = year - 2010;//判断用户输入的年份与2010的年份差
            int n = 0;//k为用户输入的年份与2010年之间闰年总数
            int beforeTotal = 0;
            //判断用户输入的年份与2010年之间有多少个闰年
            for (int i = 0; i < x; i++) {
                if (i%4==0 && i%100!=0 || i%400==0) {
                    n++;
                }
            }
            beforeTotal = (365 * x + (n));
            System.out.println(+year + "与2010年之间有" + n + "个闰年");
            System.out.println(+year + "距离2010年有" + beforeTotal + "天");
    
    
            //输入年后有多天
    
            int afterTotal = 0;
    
            //判断用户输入的月份有多少满月(31天)
            int m = 0;//m为用户输入年份与用户输入年1月之间的满月数
            int pingYueCount = 0;
            switch (month) {
                case 1:
                    break;
                case 2:
                    m=1;
                    break;
                case 3:
                    m = 1;
                    break;
                case 4:
                    m=2;
                    break;
                case 5:
                    m = 2;
                    break;
                case 6:
                    m=3;
                    break;
                case 7:
                    m = 3;
                    break;
                case 8:
                    m = 4;
                    break;
                case 9:
                    m=5;
                    break;
                case 10:
                    m = 5;
                    break;
                case 11:
                    m=6;
                    break;
                case 12:
                    m = 6;
                    break;
            }
            System.out.println(+year + "有" + (m) + "个满月数");
            //判断用户输入月份是否含有2月特殊月
            if (month > 1) {
                System.out.println("含有2月");
                if(month==2){
                    pingYueCount = (month - m-1);
                }else{
                    pingYueCount = (month - m - 1-1);
                }
    
                System.out.println("平月有:" + pingYueCount + "个");
            } else {
                System.out.println("不含有2月!");
                System.out.println("没有平月");
            }
            //判断当年是否为闰年
            if (year%4==0 && year%100!=0 || year%400==0) {
                System.out.println("该年为闰年");
                if(month>1){
                    afterTotal = m * 31 + pingYueCount * 30 + 29+day;
                    System.out.println("该年距离1月1日有:" + afterTotal + "天");
                }else{
                    afterTotal = m * 31 + pingYueCount * 30 +day;
                    System.out.println("该年距离1月1日有:" + afterTotal + "天");
                }
            } else {
                System.out.println("该年为平年");
                if(month>1){
                    if (month==2){
                        afterTotal = 31+day;
                    }else{
                        afterTotal = m * 31 + pingYueCount * 30+28+day;
                    }
                    System.out.println("该年距离1月1日有:" + afterTotal + "天");
                }else{
                    afterTotal = m * 31 + pingYueCount * 30+day;
                    System.out.println("该年距离1月1日有:" + afterTotal + "天");
                }
            }
            int total = afterTotal + beforeTotal;
            System.out.println("一共有:" + total + "天");
            //打鱼晒网
            if(total%5>0 && total%5<4){
                System.out.println("该天为打渔");
            }else{
                System.out.println("该天为晒网");
            }
        }
    }
    
    
    

    测试♥

    输入年格式不正确(月,日同理)
    在这里插入图片描述
    输入闰年2月日期不对
    在这里插入图片描述
    输入闰年试试~
    那就浪漫情人节吧,吼吼~
    在这里插入图片描述

    总结♥

    闰年的判断方式哦~:year%4==0 && year%100!=0 || year%400==0
    这个算法题分了三部分:Main,validate,judge
    附上流程图再整理一遍思路吧~

    ①主方法:
    在这里插入图片描述
    ②校验
    在这里插入图片描述
    ③judge:

    在这里插入图片描述

    展开全文
  • C程序设计语言 第二章 C语言编写程序 刘文斌 不积跬步无以至千里不积小流无以成江海 1上一章使我们对C语言有初步认识 2本章讲解如何运用C语言编写程序 3从简单到复杂从小到大 2.1在屏幕上显示Hello World!...
  • 计算内存占用量公式: (总内存-空闲内存-缓冲-缓存)/1024Mb 代码呼之欲出 monitor.py with打开文件,可以自动关闭,比直接open优雅那么一丢丢 <pre><code> python def getMem(): with ...
  • 用户输入两个数字,计算并输出两个数字之和(尝试一行代码实现)。 用户输入三角形三边长度,并计算三角形的面积:(海伦公式) 输入半径,计算圆的面积。 画一组同切圆 画一个五角星 画一个全黄色的五角星 ...
  • Bling-Phong模型的计算公式和Blinn的计算公式是一样的但是夹角是不一样的.代码如下:得到平分线的方法:normalize()标准化两个向量的和.对比图:// Upgrade NOTE: replaced '_World2Object' with 'unity_...
  • 这道题的基本思想也就是DP,其实就是顺序扫描字符串,没加入一个字符串,都DP公式计算下,DP直接看代码,不解释了2 原题In the computer world, use restricted resource you have to generate maxim
  • python练习

    2017-09-08 17:09:00
    1、输出Hello World!程序。 运行结果: 2、交互式和文件式分别练习简单的交互...4、用户输入三角形三边长度,并计算三角形的面积(海伦公式)。 运行程序: 运行结果: 5、输入半径,计算圆的面积。...
  • Python输入输出练习

    2019-09-30 21:40:24
    用户输入两个数字,计算并输出两个数字之和(尝试一行代码实现)。 用户输入三角形三边长度,并计算三角形的面积:(海伦公式) 1 a = float(input("a=")) 2 b = float(input("b=")) 3 c = float(input("c...
  • 2_算法简介

    2017-03-15 12:55:05
    高斯求和公式:(1+1000)*1000/2,执行次数为1 显而易见,好的算法可以节省很多资源 算法的基本特性 输入:可以0个输入,如 print(‘Hello World’) 输出:至少1个输出 有穷性:不是死循环,当然也不会是10几年
  • 在科学计算中,软件可以任何数量的语言编写,并且必须使用各种编程模型或数学库来实现针对任何特定问题的高性能。 热方程是众所周知的偏微分方程(PDE),它是证明“ Hello World!”的完美公式。 比较编程选项。 ...
  • 第五章:循环控制结构程序06 让编程改变世界 Change the world by program ...1.要确定计算的精度可以配合while循环语句fabs()函数确定精度来退出。 2.据观察,分子不变,分母却每次递增2,且正负切换。 ...
  • 任务156: 如何图表讲故事? 任务157: Tableau家族产品 任务158: Tableau发展历程 任务159: Tableau产品优势 任务160: Tableau Desktop安装配置 任务161: Tableau的导航与菜单 任务162: Tableau设计流程最佳...
  • 1.3.6实战windbg调试自己驱动DDK_HelloWorld-14课 A、用户层调试和内核调试区别 B、如何下断跟踪 C、F10步过和F11步进 D、查看寄存器相关信息 E、源代码调试与机器码调试 1.3.7DDK_HelloWorld卸载例程细化-15课 A...
  • windows环境下32位汇编语言程序设计

    热门讨论 2011-09-20 13:02:19
    汇编写复杂的运算程序固然会比C更有效率,但同样的事在C中用一个表达式就全部搞定了,从这里开始学汇编,给人的感觉就像从复杂的公式开始学算术,要知道,加法还没有学会呢!而对于高级语言封装起来的系统功能,...
  • Java开发技术大全(500个源代码).

    热门讨论 2012-12-02 19:55:48
    HelloWorldApp.java 第一个Java开发的应用程序。 firstApplet.java 第一个Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 ...
  • 数学基础研究基本数学概念(数、几何形状、集合、函数...),及其 如何构成更复杂结构和概念的 层次结构,特别是一类 也被称为元数学概念的 基础性重要结构,它们来形成数学语言(公式、理论、以及它们的 用来表意...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

world用公式计算