SGU 111 Very simple problem

端到端自动驾驶的精准测试场景开发 1. 背景介绍 自动驾驶技术的发展正在改变交通运输的未来,然而,要实现安全可靠的自动驾驶,需要进行大量的测试和验证。端到端自动驾驶系统的测试场景开发是实现这一目标的关键。本文将详细介绍端到端自动驾驶的精准测试场景开发,包括核心概念、算法原理、数学模型、项目实践,以及未来发展趋势。 2. 核心概念与联系 阅读详情

叫Very simple problem的通常都不简单。。。

此题就是让你求一个数的平方根取整。但是这个数特别大10^1000。所以不能(int)sqrt。。

查了一下解题报告,有两种方法。

第一种是模拟徒手开方,第二种是高精度+二分。

这里先整理徒手开方的解法。

(1)把被开方数(如22146436)从右向左每隔两位用撇号分开(如22’14’64’36); 
(2)从左边第一段(如22)求得算术平方根的第一位数字(如4) ; 
(3)从第一段减去这第一位数字的平方(如22-42=6),再把被开方数的第二段写下来,作为第一个余数(如614); 
(4)把所得的第一位数字(如4)乘以20,去除第一个余数所得的商的整数部分(如614÷(4×20)=7.675的整数部分7)作为试商(注:如果这个整数部分大于或者等于10,就改用9作试商,如果第一个余数小于第一位数字乘以20的积,则得试商0); 
(5)把第一位数字的20倍加上试商的和,乘以这个试商所得值不大于第一个余数时(如(4×20+7)×7=609≤614),这个试商就是算术平方根的第二位数字(注:如果所得的积大于余数时,就要把试商减去1再试,直到积小于或者等于余数为止); 
(6)用第一个余数减去第一位数字的20倍加上试商的和乘以该试商所得值的差(如614-609=5),往后用同样的方法,继续求算术平方根的其他各位数字。



把这种过程编程实现即可。

如果位数是奇数,则在最高位前加一个0,使其依然可以被两两分割。

省去试商的过程,从9开始枚举到0,找到t,使得目前的 (ans*20+t)*t 不大于当前余数。

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;
bool Check(char *rem,int s,int e,char *ans,int la,char *s3)
{
    int ls3,ite,i,n;
    char s1[2000],s2[2000];
    strcpy(s1,rem);
    strcpy(s2,ans);
    s3[0]=ans[la-1];
    n=s3[0]-'0';
    ite=0;
    ls3=1;
    //乘以20
    for (i=la-2; i>=0; i--)
    {
        ite+=(s2[i]-'0')*2;
        s3[ls3]=ite%10+'0';
        ite/=10;
        ls3++;
    }
    if (ite != 0)
    {
        s3[ls3]=ite+'0';
        ls3++;
    }
    while (s3[ls3-1] == '0' && ls3 > 1)
        ls3--;
    s3[ls3]='\0';
    ite=0;
    //加上n后,再乘以n
    for (i=0; i<ls3; i++)
    {
        ite+=(s3[i]-'0')*n;
        s3[i]=ite%10+'0';
        ite/=10;
    }
    while (ite != 0)
    {
        s3[ls3]=ite%10+'0';
        ite/=10;
        ls3++;
    }
    while (s3[ls3-1] == '0' && ls3 > 1)
        ls3--;
    s3[ls3]='\0';
    strrev(s3);
    if (ls3 == 1)
    {
        s3[ls3]=s3[0];
        s3[0]='0';
        ls3++;
    }
    //判断大小
    if (e-s < ls3)
    {
        return false;
    }
    else if (e-s > ls3)
    {
        return true;
    }
    else                   //位数相等的情况下
    {
        for (i=0; i<ls3; i++)
        {
            if (rem[s+i] < s3[i])
                return false;
            else if (rem[s+i] > s3[i])
                return true;
        }
        return true;
    }
}
void ChangeRem(char *rem,int *s,int e,char *s3)
{
    int ls,i;
    i=e-1;
    ls=strlen(s3)-1;
    while (ls >= 0)
    {
        if (rem[i] >= s3[ls])
        {

            rem[i]-=s3[ls];
            rem[i]+='0';
        }
        else
        {
            rem[i-1]-=1;
            rem[i]=(rem[i]-s3[ls])+10+'0';
        }
        ls--;
        i--;
    }
    while (rem[(*s)] == '0')
    {
        (*s)++;
    }
}
char *BigSqrt(char *str)
{
    int i,j,ls,la,lr,sr;
    char num[2000],ans[2000],rem[2000],tc,tstr[2000];
    la=0;
    lr=0;
    sr=0;
    ls=strlen(str);
    if ((ls&1) == 1)                //如果位数是奇数,则在最高位加0
    {
        num[0]='0';
        strcpy(num+1,str);
        ls++;
    }
    else
    {
        strcpy(num,str);
    }
    for (i=0; i<ls; i+=2)
    {
        rem[lr]=num[i];
        rem[lr+1]=num[i+1];
        lr+=2;
        tc='9'+1;
        while (tc--)             //从9到0
        {
            ans[la]=tc;
            ans[la+1]='\0';
            if (Check(rem,sr,lr,ans,la+1,tstr) == true)          //判断(ans*20+t)*t是否不大于当前余数
            {
                //满足,对当前余数remaider-(ans*20+t)*t
                la++;
                ChangeRem(rem,&sr,lr,tstr);
                break;                                     //找到了平方根的这一位上的数,直接跳出
            }
        }
    }
    return ans;
}
int main()
{
    char str[2000];
    scanf("%s",str);
    printf("%s",BigSqrt(str));
}


【ODX介绍】-4.2-UDS诊断$27服务在ODX-D诊断描述文件中如何描述 共25页精讲:附ODX-D XML:UDS $27 Security服务0x61和0x62 Sub-Function,其它Sub-Function可参照其格式。 目录 1 ODX-D描述一个UDS $27 Security服务Sub-Function的结构 2 标签DIAG-SERVICE描述的内容 2.1 举例:DIAG-SERVICE的XML描述 3 标签REQUEST描述的内容 3.1 举例:REQUEST的XML描述 4 标签POS-RESPONSE描述的内容 4.1 举例:PO.. 阅读详情

相关推荐

Cesium实战:5分钟搞定离线地图与地形加载(附避坑指南)

本文详细介绍了Cesium在内网环境下的离线部署实战方案,重点解决了影像与地形数据的本地加载问题。通过逐步指导项目配置、本地瓦片与自定义地形数据的处理,并优化相机控制体验,帮助开发者快速构建安全、高效的三维地球应用,避免常见的401错误与加载失败陷阱。

weixin_30632089的博客 281

快速切题 sgu 111.Very simple problem 大数 开平方 难度:0 非java:1

111.Very simple problem time limit per test: 0.5 sec.memory limit per test: 4096 KB You are given natural number X. Find such maximum integer number that it square is not greater than X. Input In...

weixin_30414155的博客 165

【芯片验证随心记】1.SystemVerilog中,rand和randc的区别?如何用constraint实现randc?

在SystemVerilog里,randc 的“不重复循环”特性是用一个 周期性排列器(permutation engine) 实现的,而这个引擎在 LRM 里并没有公开。我们只能在 “用户空间” 用 rand + constraint 去模仿它的行为。每次随机化只取 queue.pop_front(),用完再洗。在4次随机化内,y会依次出现0,1,2,3各一次(顺序随机)每次随机化,x可能是0-3中的任意值,可能连续多次相同。每次随机化时,在未使用的值里随机挑一个;第5次随机化时,重新生成新的排列周期。

qq_43172512的博客 342

sgu 111. Very simple problem 大数开方

111. Very simple problemtime limit per test: 0.25 sec. memory limit per test: 4096 KBYou are given natural number X. Find such maximum integer number that it square is not greater than X.InputInput fi...

superkunn的博客 304

MATLAB并行开不了的解决办法

在服务器上新安装了MATLAB 2013b,在开并行计算的时候出现了下列问题 经过在网上搜多这个问题,我感觉这个问题应该是安装的时候的验证问题或者激活不成功之类的。注意其中有一句validate the profile ‘local’ in the Cluster Profile Manager.在matlab官网上找到了设置Cluster Manager的教程,如下 parallel>

sinat_36713319的博客 5987

SAP 超详细解析信用控制

当然,集团内中国区、日本或欧洲区的公司使用了不同本位货币会计核算虽然分开,但对于客户的信用也可以统一管 理的,只要将这些不同本位币的公司代码纳入同一信用控制范围,信用控制范围货币可以考虑使用总部集团的货币,各公司代码的信用发生额自动根据系统设定汇率 转换为统一的信用控制范围货币。此步有一个“覆盖CC范 围”的选项,表示在过账时此步缺省的分配给公司代码的信用控制范围可以在其它信用控制范围使用,有时当一个公司代码的客户需要将信用数据过账到其它信用控 制区域,这个选择就非常有必要。

matinal 當冬夜漸暖 。公众号:matinal 1万+

SGU 111 Very simple problem(高精度)

题意:给出一个数x(1 思路:用高精度模拟开根号的过程,需要注意一个优化就是开根号以后的位数在n/2-3与n/2+2之间。很少写高精度,感觉越写越蛋疼,写了一下午,好忧桑。开始直接写的,结果超时了,没办法,只能写压位,写了10^8的高精,结果不知道怎么搞的,总wa,后来实在没办法,想是不是乘的时候溢出了,改成10^5过了……唉   代码:   #include #include #inc

绝望的乐园 1067

计算机视觉——SIFT特征匹配

文章目录一、SIFT特征检测原理1.1基本思想1.2二、SIFT特征检测图片兴趣点三、SIFT特征检测描述子匹配四、输入图片检测与之 一、SIFT特征检测原理 1.1基本思想 1.2 二、SIFT特征检测图片兴趣点 代码: 检测结果: 三、SIFT特征检测描述子匹配 四、输入图片检测与之 ...

weixin_43869874的博客 3855

sgu111:Very simple problem

可能是我太弱...二分过不了... 这里讲一下另一个思路: 我们可以确定答案的位数,如果数N有奇数位,则答案位数为N/2+1,否则为N/2; 从位数L到1枚举每一位的数字; 枚举有个优化,设已枚举出的k-1位数为T(后接L-k+1个0),对于新枚举出的第k位数t, 设T'=T+t*10^(L-k),由于高精度乘法消耗太大,我们可以由T来推出T'^2; T'^2=[T+t*10^(L-k

qq_20118433的专栏 523

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2664

YOLO12涨点改进| 损失函数改进篇 |AAAI 2025| 一种小目标检测SDLoss损失函数,解决现有损失函数对不同目标尺度敏感度不足的局限,提高了网络检测不同尺度目标的敏感能力,助力高效涨点

本文提出了一种改进的小目标检测方法SDLoss,通过动态调整尺度损失与位置损失的权重,优化了YOLOv12模型的性能。针对红外小目标检测中存在的两个主要问题:1)标准卷积难以捕捉目标的高斯空间分布特性;2)现有损失函数对不同尺度目标的敏感度不足,研究团队开发了Pinwheel-shaped卷积(PConv)和Scale-based Dynamic损失函数(SDLoss)。PConv通过不对称卷积核设计显著提升感受野,SDLoss则根据目标大小动态平衡尺度与位置损失的影响。

Ai缝合怪、助力小伙伴高效发论文 238

sgu 111 Very simple problem 高精开平方

给一个不超过10^1000的数n,求最大的数k使得k^2 import java.io.*; import java.util.*; import java.math.*; public class aaa { public static void main(String[] args) { Scanner cin= new Scanner(new BufferedInputSt

Broken Wings 836

基于深度学习的茶叶等级检测识别系统:YOLOv8 + UI界面 + 数据集完整实现

随着深度学习技术的不断进步,基于计算机视觉的茶叶等级检测系统可以大大提高检测效率,提供客观一致的评估标准。本系统将利用YOLOv8进行茶叶等级的检测与识别,通过图形用户界面(UI)实现与用户的交互,提供茶叶等级分类的实时反馈。本文将详细介绍如何使用YOLOv8结合UI界面,建立一个完整的茶叶等级检测与识别系统,包括数据集的准备、模型的训练、UI的设计及完整的代码实现。本系统的目标是通过深度学习技术,结合YOLOv8模型和图形用户界面(UI),实现对茶叶等级的自动化检测与识别。

YOLO 972

SGU111 Very simple problem

输入一个大整数X,输出平方小于等于X的最大的整数

╮(╯▽╰)╭ 471

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SGU 111 Very simple problem 翻译 题解

111. Very simple problem 每个测试点时间限制: 0.50 sec.每个测试点内存限制: 4096 KB 给你一个自然数X,输出平方小于或等于X的最大整数。 输入 输入包含一个自然数 X (1≤X≤101000). 输出 输出答案 样例输入 16 样例输出 4...

aiechu6301的博客 189

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

[SGU]111. Very simple problem

Analysis     不要被标题迷惑了!没那么看上去简单哟!刚看这题总觉得似曾相识,复习初赛的时候才发现是去年初赛完善程序的第一题……不过把那个程序交上去应当是会TLE的吧……因为它没压位……我的AC程序是二分+压位高精。据说还有笔算开方的算法,我果然小学数学没学好T T…… Accepted Code var a,l,r,mid,sqrmid,tmp:array[0

Jerry I. Huang 1077

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数学/手开平方/sgu111 Very simple problem

题意   给出一个数n,求sqrt(n) (1≤n≤101000) 分析   题意很简单,就是开一个数的平方   在网上看了看一些方法,一下摘自“风中落叶”hi.baidu.com/xiamengy 1.举例 上式意为65536的开平方为256。手开方过程类似于除法计算。为了方便表述,以下仍称类似位置的数为“被除数”、“除数”、“商”。 以65536为例,其具体计算过程...

dkkzxga4442的博客 320

SGU111 Very simple problem(大数开方)

题意是,给出一个大整数(范围 10^1000),求2次方不大于该数的最大数 开始用的是C的高精度加上笔算开方,但是一整天都没出结果,我类个去啊…… 无奈找了个 java 的代码,先出出气…… 思想很简单,从1~10^500,区间二分求平方然后跟目标数比较。 第一次

laoda扯一扯 1422

SGU 111 Very simple problem(高精度+二分)

Description 给出一个数n,求平方不超过n的最大正整数 Input 一个整数n(1<=<=10^1000) Output 平方不超过n的最大正整数 Sample Input 16 Sample Output 4 Solution 二分答案+高精度 Code#include<cstdio> #include<iostream> #include<algorithm>

ZSQ 637

Very simple problem - SGU 111(大数开方)

分析:使用的是构造新数字法进行不断构造,然后逼近每一位数字,然后使用c++徒手敲了240多行代码,竟然过了........................很有成就感。 代码如下: =========================================================================================================...

weixin_30700099的博客 143

sgu-111-111. Very simple problem(java大数)

题意:求有多少个数的平方不大于大数N;1≤N≤101000 分析:java大数二分 import java.util.Scanner; import java.math.*; public class Solution { /** * @param args */ public static void main(String[] ar...

weixin_30256901的博客 89
上一篇: SGU 116 Index of super-prime
下一篇: POJ 1850 Code
plusplus7
博客等级 码龄15年 59粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值