123组合成最小数值_排列组合c的计算方法

123组合成最小数值_排列组合c的计算方法已知一个正整数n,n的范围是1—999999999

123组合成最小数值_排列组合c的计算方法"

目录

一、总述

二、3_7_数字拆分

三、3_8_位数对调

四、3_10_同构数

五、4_3_回文数

六、4_4_进制转换一


一、总述

数的每一位拆出来主要用的是:x%10x/10 和 x%10*pow(10, i)【伴随i++】

二、3_7_数字拆分

已知一个正整数n,n的范围是1—999999999。你的任务是把这个整数分解为单个数字,然后从左至右依次打印出每一个数字。例如将整数“12345”分解,得到“1 2 3 4 5”。

输入格式:

只有一个正整数。测试用例保证合法。

输出格式:

只有一行,为输入整数的拆分结果,相邻两个数字之间有一个空格,最后一个数字后是换行符。例如12345的拆分结果为:1 2 3 4 5。

输入样例:

12345

输出样例:

1 2 3 4 5

#include<stdio.h>
int main(){
    int i=0,a[10];
    long long x;
    scanf("%lld",&x);
    while(x>0){
        a[i]=x%10;
        i++;
        x=x/10;
    }
    i--;
    while(i>=0){
        printf("%d",a[i]);
        if(i>0){
            printf(" ");
        }
        i--;
    }
}

 !!printf(“%d”,a[i]);printf(“%d”,&a[i]); 是两码事

package pta1;
import java.util.Scanner;

public class PTA1 {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in); 
		String A=in.nextLine();
		char[] B=A.toCharArray();
		for(int i=0;i<B.length;i++) {
			System.out.printf("%c",B[i]);
			if(i!=B.length) {
				System.out.printf(" ");
			}
		}
		} 
	}


三、3_8_位数对调

 已知一个正整数n(可以用int存储),你的任务是将n的最低位与最高位上的数字对调,次低位与次高位上的数字对调,以此类推,直到中间位。最后得到一个新整数并将新的数字输出。需要注意的是:如果当最低位数字与最高位数字对调后,数字的长度变短(也就是最低位为0),则不能对这个数进行位数对调处理。

输入格式:

只有一个正整数,即n。

输出格式:

当n可以进行数字对调时,例如n=123,你应输出“321”;当n不可以进数字对调时,例如n=980,你应输出“The number cannot be changed.”。

输入样例:

1365

输出样例:

5631

#include<stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    if(n%10==0){
        printf("The number cannot be changed.");
        return 0;
    }
    while(n>0){
        printf("%d",n%10);
        n=n/10;
    }
}

四、3_10_同构数

 所谓“同构数”是指这样的数,它出现在它的平方数的右边,例如5的平方数是25, 25的平方数是625,所以5和25都是同构数。你的任务是判断整数x是否是同构数。若是同构数,输出“Yes”,否则输出“No”。x的取值范围是(1<=x<=10000),如果输入的x不在允许范围内,则输出错误提示信息“x out of range”。

输入格式:

只有一个整数。测试用例保证所有输入可以用int存储。

输出格式:

只有一行,为判断结果。

输入样例:

20000

输出样例:

20000 out of range

#include<stdio.h>
#include<math.h>
int main() {
    int x,x0, n = 0, i = 0;
    scanf("%d", &x);
    if (x < 1 || x>10000) {
        printf("%d out of range", x);
        return 0;
    }
    x0 = x * x ;
    x = x * x;
    while (x > 0) {
        n = n + x % 10 * pow(10, i);
        if (n * n == x0) {
            printf("Yes");
            return 0;
        }
        x = x / 10;
        i++;
    }
    printf("No");
}

五、4_3_回文数

回文是指正读和反读都一样的数或文本段。例如,12321、55555、45554、11611都是回文数。输入一个长度不超过10位的整数n,判断它是否是回文数。

输入格式:

只有一个整数n,即待判断的数字。测试用例保证n可以用int存储。

输出格式:

当n为回文数时输出“Yes”,否则输出“No”。

输入样例:

12321

输出样例:

Yes

#include<stdio.h>
int main(){
    int n,n0,x=0;
    scanf("%d",&n);
    n0=n;
    while(n>0){
        x=x*10+n%10;
        n=n/10;
    }
    if(n0==x){
        printf("Yes");
    }
    else{
        printf("No");
    }
}

六、4_4_进制转换一

已知一个只包含0和1的二进制数,二进制数的长度不大于10。你的任务是将其转换为十进制数并打印出来。
提示:用除法和求余运算每次从右到左获取二进制整数的各位数字。在十进制数值系统中,最右边的数字是个位,个位的左边依次是十位、百位、千位等等。与之类似,在二进制数值系统中,最右边的数字是1位,左边的数字依次为2位、4位、8位等等。十进制数234可分解为4*100+3*101+2*102,二进制数1101可分解为1*20+0*21+1*22+1*23,它等价于十进制数1+0+4+8,即13。

输入格式:

为一个只包含0和1的整数n(长度不超过10位),代表二进制数。

输出格式:

为转换得到的十进制数。

输入样例:

11111

输出样例:

31
#include<stdio.h>
#include<math.h>
int main(){
    int x,i=0,y=0;
    scanf("%d",&x);
    while(x>0){
        y=y+x%10*pow(2,i);
        i++;
        x=x/10;
    }
    printf("%d",y);
}

 

今天的文章123组合成最小数值_排列组合c的计算方法分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88382.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注