Fork me on GitHub

SCAU 8626 原子量计数

8626 原子量计数

时间限制:1000MS  内存限制:1000K 提交次数:0 通过次数:0

题型: 编程题   语言: 无限制

Description

给出一个化学原子式,仅含有C,H,O,N 四种元素,计算其总分子量。

例如,C6H5OH 的原子量为94.108g/mol,计算方法为:
6 × (12.01 g/mol) + 6 × (1.008 g/mol) +1 × (16.00 g/mol).

Input

输入的第一行是数字T,表示输入文件含有T个CASE。之后有T行,每行有一个长度小于100 的字符串,
表示要求的分子式。原子都用大写字母表示,没有括号,保证所有的式子都合法。

Output

输出每个式子的原子量。

Sample Input

4
C
C6H5OH
NH2CH2COOH
C12H22O11

Sample Output

12.010
94.108
75.070
342.296

Hint


Source

PKKJ @ 07 GIS 1

Provider

admin

复制代码
#include<stdio.h>
#include<string.h>
double view(char w, int n)
{
    switch(w)
    {
        case 'C' : return 12.01*n;
        case 'H' : return 1.008*n;
        case 'O' : return 16.00*n;
        case 'N' : return 14.01*n;
        default : return 0;
    }
}

int main()
{
    char list[120], temp;
    int  n, T, i, j, len, count;
    double sum;
    scanf("%d", &T);
    while(T--)
    {
        memset(list, 0, sizeof(list));
        sum = 0;
        scanf("%s", list);
        len = strlen(list);
        for(i=0, count=1; i<len-1; i+=count, count=1)
        {
            if('A'<=list[i] && list[i]<='Z')
            {
                if('A'<=list[i+count] && list[i+count]<='Z') sum += view(list[i], 1);
                else 
                {
                    n = list[i+count++] - '0';
                    while(i+count<len && !('A'<=list[i+count] && list[i+count]<='Z'))
                    n = n*10 + (list[i+count++] - '0');
                    sum += view(list[i], n);
                    
                }
            }
            
        }
        if('A'<=list[i] && list[i]<='Z') sum += view(list[i], 1);
        printf("%.3lf\n", sum);
    }
}
复制代码


解题报告:

1y,最主要的是对一个字符串的分析,注意出现的各种情况,在尾位的情况有三种情况(举例说): N4    NC    N11,根据各种情况进行分析编写

 

posted @   Gifur  阅读(426)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
TOP
点击右上角即可分享
微信分享提示