zoukankan      html  css  js  c++  java
  • LFYZ-OJ ID: 1010 天使的起誓

    思路

    • 理解题目后,会发现是一个高精度除低精度求余问题,非常简单。

    • 容易出错的地方是:求余结果为0的时候,此时,天使所在的盘子号码其实就是n,如果直接返回余数,得到的结果则是0。

    • 被除数的范围是2~101000,需要的存储位数为1001,加上一个长度位,需要一个最小1002的数组,否则会发生计算溢出。

    代码例程

    #include<iostream>
    #include<cstring>
    using namespace std;
    int m[1002];                            //被除数,m[0]是位数,全局数组,默认初始化为0
    int n;                                  //除数n
    void getm(){                            //读取字符串(高精度数字)并转储于m数组中
    	char t[1001];
    	scanf("%s", t);
    	m[0]=strlen(t);
    	for(int i=1; i<=m[0]; i++)
    		m[i]=t[m[0]-i]-'0';
    }
    int yushu(int A[], int B){              //求余函数,A%B
    	int i, t=0;                         //t为余数,其实为“过程中被除数”
    	for(i=A[0]; i>=1; i--){
    		t=t*10+A[i];
    		A[i]=t/B;
    		t%=B;
    	}
    	if(!t) t=B;                         //余数为0,说明天使就在B盘子
    	return t;
    }
    int main(){
    	scanf("%d", &n);
    	getm();
    	printf("%d", yushu(m, n));
    	return 0;
    }
    
  • 相关阅读:
    sklearn linear_model,svm,tree,naive bayes,ensemble
    便利过滤
    js下载
    小程序修改radio的大小
    el-tree 问题与需求
    jsp页面用html引入vue.js注意问题
    WebPack
    yarn
    vue-cli 4以上 vue.config.js
    Cannot find module 'core-js/modules/es6.regexp.constructor'
  • 原文地址:https://www.cnblogs.com/lfyzoi/p/6780240.html
Copyright © 2011-2022 走看看