经典题目(二)

数学与算法经典问题解析
本文探讨了四个有趣的数学和算法问题,包括2的29次方的位数特性、素数无限性的证明、寻找数组中出现一次的两个数字以及有序链表的合并。通过对这些问题的分析和解题思路的阐述,揭示了数学和算法的魅力。
部署运行你感兴趣的模型镜像

题目:2的29次方是一个9位数,在这个9位数中各个位上的数字都不一样,求0到9中哪一个数字没有出现过 ?

 

分析:由于,我们又知道一个数模9的余数等于这个数的所有位的数字之和模

     9的余数,那么因为0到9的所有数字之和模9余0,而现在这个9位数模9余-4,说明缺少-4。

 

 

题目:证明素数有无穷多个

 

分析:利用反证法,假设素数有有穷多个,设最后一个素数为,那么我们设,因为

     所有小于它的素数都余1,那么说明也是一个素数,且比大,这样与假设矛盾,所以素数有无穷多个。

 

 

题目:给一个很大的数组,里面有两个数只出现过一次,其他数都出现过两次,把这两个数找出来。

 

分析:假设两个不同数值是a,b,那么ans = a^b,然后求的ans中第一次出现1的位置cnt,根据异或运算特性,

     第一次出现1的地方就是这二个数位有区别的地方,比如10010101与11000001得到异或结果是01010100。

     那么第一次出现1的地方是第三位,a的第三位是1而b是0。接着遍历数值,找出第三位是1的数值就异或,得

     到的结果就是其中一个数与其他出现二次的数求异或,因为出现二次的数异或得到为0所有最后结果就是所

     求其中一个数。最后ans与该数求异或就得到另一个数。

 

void Work(int a[],int n)
{
    int ans = 0;
    for(int i=0;i<n;i++)
        ans ^= a[i];
    int t1 = ans;
    int t2 = ans;
    int cnt = 0;
    while(!(t1 & 1))
    {
        t1 >>= 1;
        cnt++;
    }
    for(int i=0;i<n;i++)
    {
        if((a[i] >> cnt) & 1)
            ans ^= a[i];
    }
    int x = ans;
    int y = ans ^ t2;
    if(x > y) swap(x,y);
    cout<<x<<" "<<y<<endl;
}


 

题目:将两个有序的链表合并为一个有序链表,不许再申请多余的空间。

 

代码:

void  Merge(List *list1, List *list2)  
{ 
    Node *p, *q, *r, *last;
    p = list1->next;  
    q = list2->next;
    last = list1;
    last->next = NULL;
    while(p && q) 
    {  
        if(p->data < q->data) 
        {
            r = p;
            p = p->next;
        }
        else 
        {
            r = q;
            q = q->next;
        }
        r->next = last->next;
        last->next = r;
        last = r;
    }
    if(p) last->next = p;    
    else  last->next = q;
    list2->next = NULL;
}


 

 

 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值