• A1060 Are They Equal (25 分)


    一、技术总结

    1. cnta、cntb用于记录小数点出现的位置下标,初始化为strlen(字符串)长度。
    2. q、p用于记录第一个非0(非小数点)出现的下标,可以用于计算次方和方便统计输出的字符串,考虑到前面可能出现0。
    3. 如果cnta > p ,说明小数点在第一个开始的非0数的下标的右边,那么科学计数法的指数为cnta – p ; 否则应该为cnta – p + 1; 字符串b同理
    4. 如果字符串p、q等于字符串长度,说明字符串为0,此时直接把 cnta(或者cntb)置为0,因为对于 0来说乘以几次方都是相等的,如果不置为0可能会出现两个0比较导致判断为它们不相等
    5. indexa = 0开始给新的A数组赋值,共赋值n位除去小数点外的正常数字,从p的下标开始。如果p 大于等于strlen,说明字符串遍历完毕后依旧没能满足需要的位数,此时需要在A数组后面补上0 直到满足n位数字。indexb同理,产生新的B数组
    6. 判断A和B是否相等,且cnta和cntb是否相等。如果相等,说明他们用科学计数法表示后是相同的,输出YES,否则输出NO,同时输出正确的科学计数法
    7. 数组开大一点

    二、参考代码

    #include<iostream>
    #include<cstring>
    using namespace std;
    int main(){
    	int n, p = 0, q = 0;
    	char a[10000], b[10000], A[10000], B[10000];
    	scanf("%d%s%s", &n, a, b);
    	int cnta = strlen(a), cntb = strlen(b);
    	for(int i = 0; i < strlen(a); i++){
    		if(a[i] == '.'){
    			cnta = i;
    			break;
    		}
    	}
    	for(int i = 0; i < strlen(b); i++){
    		if(b[i] == '.'){
    			cntb = i;
    			break;
    		}
    	}
    	int indexa = 0, indexb = 0;
    	while(a[p] == '0' || a[p] == '.') p++;
    	while(b[q] == '0' || b[q] == '.') q++;
    	if(cnta > p) cnta = cnta - p;
    	else cnta = cnta - p + 1;	
    	if(cntb > q) cntb = cntb - q;
    	else cntb = cntb - q + 1;
    	if(p == strlen(a)) cnta = 0;
    	if(q == strlen(b)) cntb = 0;
    	while(indexa < n){
    		if(a[p] != '.' && p < strlen(a)) A[indexa++] = a[p];
    		else if(p >= strlen(a)) A[indexa++] = '0';
    		p++;
    	}
    	while(indexb < n){
    		if(b[q] != '.' && q < strlen(b)) B[indexb++] = b[q];
    		else if(q >= strlen(b)) B[indexb++] = '0';
    		q++;
    	}
    	if(strcmp(A, B) == 0 && cnta == cntb)
    		printf("YES 0.%s*10^%d", A, cnta);
    	else
    		printf("NO 0.%s*10^%d 0.%s*10^%d", A, cnta, B, cntb);
    	return 0;
    }
    
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    C# 枚举转列表
    Idea 快捷键大全【转】
    Bootstrap列表与代码样式(附源码)--Bootstrap
    JQuery实现点击按钮切换图片(附源码)--JQuery基础
    Bootstrap文本排版基础--Bootsrap
    使用定时器限制点击按钮发送短信(附源码)--JavaScript小案例
    分类导航菜单的制作(附源码)--HTML
    MyEclipse开发平台下如何将新建的JSP页面的默认编码格式设置为UTF-8--JSP
    网页加载进度的实现--JavaScript基础
    动态地添加HTML控件-JavaScript基础
  • 原文地址:https://www.cnblogs.com/tsruixi/p/11919580.html
Copyright © 2020-2023  润新知