颠倒的号码牌/最多约数问题

颠倒的号码牌

题目:

小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。其标价都是4位数字(即千元不等)。小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了。

这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0 都可以。这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:1958 倒着挂就是:8561,差了几千元啊!! 当然,多数情况不能倒读,比如,1110 就不能倒过来,因为0不能作为开始数字。 有一天,悲剧终于发生了。某个店员不小心把店里的某两个价格牌给挂倒了。并且这两个价格牌的电视机都卖出去了! 庆幸的是价格出入不大,其中一个价牌赔了2百多,另一个价牌却赚了8百多,综合起来,反而多赚了558元。 请根据这些信息计算:赔钱的那个价牌正确的价格应该是多少?
答案是一个4位的整数,请通过浏览器直接提交该数字。

#include<stdio.h>   
#include<math.h>  
  
int main(){  
    int num1[7]={0,1,2,5,6,8,9},num2[7]={0,1,2,5,9,8,6};//因为6要变成9,9要变成6,所以定义两个数组,6 9位置颠倒   
    int a,b,c,d,i,j,k,m;  
    int p1,p3,diff1,p2,diff2;//p1,p3表示赔二百的,p2表示挣八百的   
    for(a=1;a<7;a++){  
        for(b=0;b<7;b++){  
            for(c=0;c<7;c++){  
                for(d=1;d<7;d++){  
                    p1=num1[a]*1000+num1[b]*100+num1[c]*10+num1[d];  
                    p3=num2[d]*1000+num2[c]*100+num2[b]*10+num2[a];  
                    diff1=fabs(p1-p3);   
                    if(diff1>200&&diff1<300){  
                        for(i=1;i<7;i++){  
                            for(j=0;j<7;j++){  
                                for(k=0;k<7;k++){  
                                    for(m=1;m<7;m++){  
                                        p2=num1[i]*1000+num1[j]*100+num1[k]*10+num1[m];  
                                        diff2=fabs(p2-(num2[m]*1000+num2[k]*100+num2[j]*10+num2[i]));   
                                        if(diff2>800&&diff2<900&&fabs(diff1-diff2)==558){  
                                            if(p1<p3){  
                                                printf("%5d",p3);  
                                                return 0;  
                                            }else{  
                                                printf("%5d",p1);  
                                                return 0;  
                                            }  
                                                  
                                        }  
                                    }  
                                }  
                            }  
                        }  
                    }  
                }  
            }  
        }  
    }   
    return 0;  
}


最多约数问题

题目:

最多约数问题。正整数 x 的约数是能整除x的正整数,其约数的个数记为div(x),例如div(10)=4。设 a 和 b 是两个正整数,找出 a 和 b 之间约数个数最多的数 x 的约数个数。

样例输入: 1 36
样例输出: 9

#include<stdio.h>

int main(){
    int a,b;//输入的a和b
    int num,maxnum=2;//maxnum表示x约数的个数,num表示计算过程中某个是的约数个数 
    int i,j;
    scanf("%d%d",&a,&b); //input a and b
    for(i=b;i>=a;i--){   //从大到小遍历 
        if(i%2==0){     //约数最多的一定是偶数 
            num=2;  //1和i是固有的约数,所以num起始值为2 
            for(j=2;j<=i/2;j++){             //j代表一个约数 
                if(i%j==0){                
                    if(j==i/j){    //例如 36=6*6的情况 
                        num++;
                    }else if(j<i/j){        
                        num+=2;
                    }else{
                        break;
                    }
                }
            } 
            if(num>maxnum)
                maxnum=num;
        }
    }
    printf("%d",maxnum); 
    return 0;
} 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 你的数学直觉怎么样?你能凭借直觉,迅速地判断出谁的概率大,谁的概率小吗?下面就是 26 个这样的问题。如果你感兴趣...
    cnnjzc阅读 11,933评论 0 12
  • 小学奥数其实很简单,以下是这六个部分的知识点! 1 第一部分(知识点1-6) 2、年龄问题的三个基本特征: ①两个...
    小一哥阅读 5,160评论 0 3
  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 7,641评论 0 5
  • 潜伏者 原题 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动。历尽艰险后,潜伏于 S 国的...
    bbqub阅读 3,294评论 0 0
  • 我奶奶若是会码字儿,肯定会写出特牛的文章。无论什么话题奶奶都会扯到结婚嫁娶上,过渡平滑,不会跑题。我要是能这...
    从前车马书信慢慢慢阅读 2,166评论 0 0