gpt4 book ai didi

C 处理大输入

转载 作者:太空宇宙 更新时间:2023-11-04 01:50:53 24 4
gpt4 key购买 nike

<分区>

我在 C++ 部分看到了很多关于此的问题。他们中的大多数人建议使用 uint64_t, unsigned long long 我已经尝试过了

  • 长长
  • unsigned long long
  • uint64_t

我将输入 10^18 作为其最大输入。但是正在处理的数字作为一些垃圾值返回。

我给它输入 111111111111111110,当我将它除以 10^(step-1) 并乘以 10^(step-1) 时该值似乎在

Right Now In 111111111111111103
Right Now In 111111111111111104 //But it should be 111111111111111100 and then -- to decreas one more

此方法适用于较小的值。但不使用更大的投入

live demo

#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>
#include<math.h>
#include<stdint.h>
#include<inttypes.h>
int step = 0;

bool isTidy(uint64_t n){
step++;
if(n < 10) return true;
int lastNumber = n % 10;
int secondLastNumber = ((n - lastNumber)/10) % 10;
return (lastNumber >= secondLastNumber) && isTidy((n - lastNumber)/10);
}

int main(){
char* inputString;
uint64_t testNumber;
int numberOfTestcases;
int iterator = 1;

scanf("%d", &numberOfTestcases);
while(numberOfTestcases --> 0){
scanf("%"SCNu64,&testNumber);
do{
step = 0;
if(isTidy(testNumber)){
printf("Case #%d: %"PRIu64"\n",iterator++, testNumber);
break;
}
printf("Right Now In %"PRIu64"\n",testNumber);
testNumber /= pow(10,step - 1);
testNumber *= pow(10,step - 1);

printf("Right Now In %"PRIu64"\n",testNumber);
}while(testNumber --> 0);
}
return 0;
}

编辑:试图澄清问题。并修复扫描输入问题

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com