中M2020春C入门练习第I段 (7-42 整除光棍 )

Posted ccq-home

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中M2020春C入门练习第I段 (7-42 整除光棍 )相关的知识,希望对你有一定的参考价值。

题目原网址 https://pintia.cn/problem-sets/1222362023341477888/problems/1222362900697600007

第一次做的时候我的想法(想的太简单了嘤嘤嘤)

就是让光棍那个数一直增大,然后来除那个输入的数字,当可以整除的时候 ,输出光棍数/输入的数字,依次做的时候就计数呗!
于是
满心欢喜的写完
咦 为什么数据过大就开始超时QAQ
左思右想还是不会

学习借鉴

然后 看柳神的代码
这是什么QAQ 这么简单?为什么这么做?我为什么看不懂?然后
强行用代码来想 最高位开始计算结果先算出3,发现余数不为0,那就在余数末尾加1当除数,再算出5....一直到发现余数为0了,除法计算就结束了。
开始Google

知识小课堂!!!!

1.原理就是竖式除法(知识盲区....)
除数为x, 被除数开始需要在末位不断添1直到被除数不小于除数,再求商,求出第一个商后求出余数,如果为0运算结束,否则在余数末尾添1,循环。
继续科普
2.模拟除法的算法思想:
1=d1=q?x+r(0≤r<x),其中q为商r为余数1=d1=q?x+r(0≤r<x),其中q为商r为余数
11=d2=10?d1+1=10q?x+(10r+1),(0<10r+1<10x),?,所以高一位的商值若由上一步确定了,往后低位的上商都不会对其造成影响,因为每位的商最多为9.因此整数除法可自高位开始逐位确定商值.

然后 借柳神思路用C语言来写(等我把C语言干完,我就开始c++!!!我就可以不用强行翻了哈哈哈)

#include <stdio.h>

int main()
{
    int x,s=1,n=1;
    scanf("%d",&x);
    while(s<x)
    {
        s=s*10+1;
        n++;
    }
    while(1) {
        printf("%d",s/x); 
        if(s%x==0) break;
        s=(s%x)*10+1;
        n++;
    }
    printf(" %d",n);
    return 0;
}

完美!

以上是关于中M2020春C入门练习第I段 (7-42 整除光棍 )的主要内容,如果未能解决你的问题,请参考以下文章

中M2018春C入门和进阶练习集 函数题 6-1 使用函数求素数和(20 分)

明解c语言第三版 入门篇 练习题答案 第六章 第6-11题解法。函数相关的问题。

明解C语言第三版入门篇,do语言练习4-2答案,求大神

CodeForces 595B

代码练习,求0-100之内可以被3整除的数

Python3练习题 035:Project Euler 007:第10001个素数