数字(加强版)

思路:一开始是按照题目意思做,发现tle了,于是用数学方法,发现题目中说数码和不超过10的六次方,那么可以联系上数码和,发现ans=不等于0的位数个数+数码和,但如果n[len-1]!=0时,先把它化为1再消0就可以节约一步

原代码

复制代码
#include<stdio.h>
#include<string.h>
void cz1(int len,char n[]){
    char temp[10005];
    n[len-1]=n[len-1]-1;
}//减去1,默认n[len-1]>0
void cz2(int len,char n[]){
    char temp[10005];
    int cnt=0;
    for(int i=0;i<len;i++){
        if(n[i]!='0'){
            temp[cnt++]=n[i];
        }
    }
    temp[cnt]='\0';
    strcpy(n,temp);
}//消去0
int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        char n[10005];
        scanf("%s",n);
        int cnt=0;
        while(n[0]!='0'){
            int len=strlen(n);
            if(n[len-1]=='0'){
                cz2(len,n);
            }else{
                cz1(len,n);
            }
            cnt++;
        }
        printf("%d\n",cnt);
    }
}

AC代码

复制代码
#include<stdio.h>
#include<string.h>

int main(){
	int T;
	scanf("%d",&T);
	while(T--){
		char n[10005];
		scanf("%s",n);
		long long cnt=0;
		int len=strlen(n);
		long long sum=0;
		for(int i=0;i<len;i++){
			if(n[i]!='0'){
				cnt++;
				long long t=n[i]-'0';
				sum+=t;
			}
		}
		long long ans=cnt+sum;
		if(n[len-1]!='0')ans--;
		printf("%lld\n",ans);
	}
}
相关推荐
NAGNIP3 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
颜酱11 小时前
单调栈:从模板到实战
javascript·后端·算法
CoovallyAIHub14 小时前
仿生学突破:SILD模型如何让无人机在电力线迷宫中发现“隐形威胁”
深度学习·算法·计算机视觉
CoovallyAIHub14 小时前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉
CoovallyAIHub14 小时前
Le-DETR:省80%预训练数据,这个实时检测Transformer刷新SOTA|Georgia Tech & 北交大
深度学习·算法·计算机视觉
CoovallyAIHub15 小时前
强化学习凭什么比监督学习更聪明?RL的“聪明”并非来自算法,而是因为它学会了“挑食”
深度学习·算法·计算机视觉
CoovallyAIHub15 小时前
YOLO-IOD深度解析:打破实时增量目标检测的三重知识冲突
深度学习·算法·计算机视觉
NAGNIP1 天前
轻松搞懂全连接神经网络结构!
人工智能·算法·面试
NAGNIP1 天前
一文搞懂激活函数!
算法·面试
董董灿是个攻城狮1 天前
AI 视觉连载7:传统 CV 之高斯滤波实战
算法