L1-046 整除光棍

这道题不会,刚开始想到的是开long long型的,但是感觉不会那么简单,就百度了一下

然后就发现了竖式除法这个好东西,把这到题交了之后自己又延申了一下,做了个竖式除法的代码出来(正整数的)

先贴一下AC代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char a[100005];
int main()
{
    int n,j=0,len=0;
    scanf("%d",&n);
    int x=1;
    while(1)
    {
        if(j||x/n)//判断是否开始,前面带j的原因是商中的某一位极有可能为0
        {
            a[j]='0'+x/n;
            j++;
        }
        len++;//计算长度
        x=x%n;
        if(x==0)
        {
            a[j]='\0';
            printf("%s %d\n",a,len);
            break;
        }
        x=x*10+1;
    }
}

然后看一下竖式除法(这都还是小学学的,我小学怎么没那么聪明?)

 百度上随便找到图片,可以看到,实际上在进行竖式除法的时候“商的每一位”是只和做为被除数的数字前几位有关系,利用这一点就可以进行位数很大的加减乘除(这段实在有点词不达意...)

于是就有了下面的代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char a[100005],str[100005];
int main()
{
    int n,j=0,len=0,lens;
    scanf("%s",str);//被除数
    scanf("%d",&n);//除数
    lens=strlen(str);
    int x=(str[0]-'0');
    while(1)
    {
        if(j||x/n)
        {
            a[j]='0'+x/n;//做字符型时得这样写
            j++;
        }
        x=x%n;
        len++;//位数增加
        if(len==lens)//判断是否到除数最后一位
        {
            a[j]='\0';
            printf("%s\n",a);
            printf("%d",x);//余数
            break;
        }
        x=x*10+(str[len]-'0');//数字增加
    }
}

还是感觉表述的不太清晰,但是就跟着代码和式子理解一下,应该很快就能懂,

这段代码有点小bug的,只能做正整数的除法,小数和负数包括像“0001”这样的输入方式还没有解决(懒得改代码,能理解到思想就行)

 

 随便跑了几次,应该是没问题的

如果代码有错误的话,欢迎指正

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值