The beginning !

今天算是我的开始吧,正式加入C语言、C++ 编程这个长跑的队伍。加入这个行列的原因也很简单,每次通过短小的程序解决一个问题时,那感觉还是自豪感爆棚啊!小小代码,有时很短,包含的逻辑思维却很丰富,很巧妙!

分享一下昨天总结的一些代码和经验:

原题1:见图片

我的程序(正解):

/*
    草滩小王子的相反数
    BY IT_greenhand
    2014/11/30
*/
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#define N 1000000000
long int n,no,i,len;
bool a[N];

int main()
{
    int m;
    i=0;

    memset(a,false,sizeof(a));

    while(scanf("%ld",&n)!=EOF)
    {
        no=0;i=0;  //注意清零
        while(n!=0)
        {
            m = n%2;
            n = n/2;
            if(m) a[i]=true;
            else a[i]=false;
            i++;
        }
        len = i;
        i=0;

        while(!a[i]) i++;
        for(;i<len;i++)
        {
            //if(a[i]) printf("1");
            //else printf("0");    

            if(a[i]) no = no*2+1;
            else     no = no*2;

        }
        printf("%d\n",no);

    }
    return 0;
}

这个题里面涉及儿二进制的思想,感觉还是比较陌生,算是长见识了!
思路是:首先将输入的十进制数转化为二进制(true/false)反序放在数组里面,然后正序转化为十进制,最后就得到了符合要求的相反数。

原题2(见图片):

我的代码:

#include<stdio.h>
#include<math.h>
int main()
{
    unsigned long int a;
    int cnt,i,k;
    while(scanf("%ld",&a)!=EOF)
    {
        if(a!=1)
        {

        cnt=0;
        k = sqrt(a);
        for(i=1;i<sqrt(a);i++)
        {
            if(a%i==0)
                cnt+=2;
        }
        if(k*k == a) cnt++;
        printf("%d\n",cnt);
       }
       else
       printf("1\n");

    }
    return 0;
}

总结:

1、对于数据2^31测试不通过,long int 的数据范围(-2^31,2^31-1),在此贴一下数据范围的总结

unsigned   int   0~4294967295

int   -2147483648~2147483647

unsigned long 0~4294967295

long   2147483648~2147483647

long long的最大值:9223372036854775807

long long的最小值:-9223372036854775808

unsigned long long的最大值:18446744073709551615

__int64的最大值:9223372036854775807

__int64的最小值:-9223372036854775808

unsigned __int64的最大值:18446744073709551615

正数最大为unsigned __int64,取到2^64-1,超过就要用高精度算法了。

2、找公约数只找到sqrt(a)可以减小时间复杂度,是个优化,且在这里不能带等号。

时间: 2024-08-27 15:32:05

The beginning !的相关文章

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 逐渐了解SharePoint

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 逐渐了解SharePoint 简单地说,SharePoint 2013(以及以后的版本)是一个支持协同的平台----一个集中的基于Web的门户,你用来管理自己的和同事的文档.社交活动.数据和信息.这个定义非常广泛,但是用一个情形来概括就是:你在每天的基础上管理项目,同时必须也要管理项目中的人的团队.项目中,人们会开会,创建文档,交流观点,管理日程等等.如果没有一个集中的

NS3之路---Tutorial解读---Beginning&amp;&amp;Concept

鉴于前面已经有写过了ns3安装的部分,因此也就不重新介绍beginning部分了. 第四章介绍了几个网络中非常重要的概念.对于网络比较熟悉的基本上一看就能懂,理解这几个概念对于理解ns3十分重要.下面就是tutorial第四章的相关翻译工作. 相关概念介绍 首先,在进行ns3程序开发之前,我们有必要对相关概念进行介绍.它们是网络中最基本的对象,因此必须理解. 节点-Node 在因特网术语中,连接到网络的计算设备被称为主机或者终端.但是由于ns3是网络模拟器,而非因特网模拟器,因此我们更习惯使用图

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序 Access Services的新功能

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序  Access Services的新功能 Access Services伴随着这个版本,沿着持续的创新轨道向前取得了重大发展.

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序 总结

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序  总结 SP2013新的服务器端Office应用程序功能包括SP Office Web App Server,PowerPoint Automation Services和机器翻译服务.

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第15章节--开发SP2013工作流应用程序

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第15章节--开发SP2013工作流应用程序 本章节你将学到: SP中工作流的新功能: 理解工作流管理服务的新的独立并完全声明的特性: 使用工具创建工作流:Visio Pro,SPD,VS.

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第9章节--客户端对象模型和REST APIs概览 Windows Phone

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第9章节--客户端对象模型和REST APIs概览 Windows Phone 和.NET托管代码和JavaScript CSOMs一样,CSOM库对于Windows Phone和Silverlight同样可用.

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第8章节--配送SP2013Apps 应用程序生命周期

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第8章节--配送SP2013Apps 应用程序生命周期 你在商店拥有一个应用程序后,跟踪任何人们碰到的问题并发布更新以添加新功能,或者更改任何问题是非常重要的.任何生态系统中,一个流行的应用程序经常有负责人的开发人员,帮助客户解决问题,并发布更新更正常见问题.另外,客户喜欢购买应用程序,并希望看到随着日常更新和功能增强带来的价值增加.

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第8章节--配送SP2013Apps 总结

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第8章节--配送SP2013Apps 总结 SP商店提供开发人员和ISVs权限访问潜在地世界各地成百上千的SPA客户和用户,创建组件的全球市场,插件和整条业务apps线.商店是前所未有的渠道,将可重用和可重新售卖的组建送到客户手里.

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第6章节--在SharePoint2013中开发、集成和构建应用程序 总结

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第6章节--在SharePoint2013中开发.集成和构建应用程序  总结 SharePoint开发已经从基础上将重心逐渐转移到提供更好的模型,以更好适用来在云上运行SharePoint.SharePoint应用程序通过从核心SharePoint过程抽取代码运行时,并注入到Windows Azure或另一个宿主环境,解决许多在云上运行代码的问题,.

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第7章节--打包并部署SP2013 Apps

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第7章节--打包并部署SP2013 Apps 本章你将学到: 打包你创建的应用程序: 部署每个SP应用程序类型: 创建私有app目录.