1 条题解

  • 1
    @ 2025-7-4 11:00:41

    2种方法AC这道题目


    1、利用数组将原数每一位储存在数组内,由于是mod运算,所以要正序输出

    #include<bits/stdc++.h>
    using namespace std;
    long long n,a[300],x;
    void dxs(){
    	while(n!=0){
    		x++;
    		a[x]=n%10;
    		n/=10;
    	}
    }
    int main(){
    	cin>>n;
    	dxs();
    	for(int i=1;i<=x;i++)cout<<a[i];
    	return 0;
    }
    

    2、利用子程序层层调用,从而达到效果

    #include<bits/stdc++.h>
    using namespace std;
    void dxs(int x){
    	if(x==0)return ;
    	cout<<x%10;
    	dxs(x/10);
    }
    int main () {
    	int n;
    	cin>>n;
    	dxs(n);
    	return 0;
    }
    

    Ps 其实还有一种方法,但是在实测中只有60分,因为他将开头的零去掉了奇怪,测试数据怎么没有去掉

    以下是递归法

    #include<bits/stdc++.h>
    using namespace std;
    int i=0;
    int dxs(int x){
    	i--;
    	if(x==0)return 0;
    	return x%10*int(pow(10,i))+dxs(x/10);
    	
    }
    int main () {
    	int n,a;
    	cin>>n;
    	a=n;
    	while(a!=0)a/=10,i++;
    	a=dxs(n);
    	cout<<a;
    	return 0;
    }
    
    • 1

    信息

    ID
    622
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    (无)
    递交数
    74
    已通过
    31
    上传者