当前位置: 首页 > news >正文

网站新闻百度收录/上海关键词seo

网站新闻百度收录,上海关键词seo,物联网就业方向,装修客户资源在哪里找明天去献血小板,今天不让我吃这个吃那个,连牛奶都不让我喝,竟然还不让我熬夜。。。我能说我到了晚上2点才有困意么,唉。。。。 后天要去中科大会会华为,华为以高薪and累死人著称。。。说实话我也不想去华为的&#xff…

明天去献血小板,今天不让我吃这个吃那个,连牛奶都不让我喝,竟然还不让我熬夜。。。我能说我到了晚上2点才有困意么,唉。。。。

后天要去中科大会会华为,华为以高薪and累死人著称。。。说实话我也不想去华为的,搞电子产品不是专业的软件公司。。而且是中国的企业,不喜欢。。。崇洋媚外了么?我就崇洋媚外!

再过些天要去浙大。。。sohu一帮混蛋不来我们学校。。跑吧。。。杭州、南京、不行就武汉。。。

说点正经的,前些日子看到google面试说怎么计算一个数N的阶乘末尾的0的个数,我给出了算法,虽然很自信算法没有问题,但是终究不能每个都计算出来验证:因为计算机对数字的长度有限制的哇。。。学习过计算机的都知道,用过计算器的都知道数字不能计算太大呢!今天给出算法,一个数字N的阶乘,不受大小限制,里面有很多子函数,懂C语言的可以自行调用,也可以调出很多功能的哇~~~哈哈!C语言版,通过gcc编译器编译!链表什么的都是根据自己需要写的,不拘泥于形式,用自己写的代码舒服,so,没调用什么头文件!上代码吧。。。不要挑我格式上的问题,对格式不感兴趣。。。如果能提高性能的话虚心接受,毕竟代码是我一边想一边写出来的,没有全部成型后再写,性能上肯定会有很多不好的地方的!

特意强调一下,这是原创  !  [原创] 

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#define MAXSIZE 100
/*
List With Header Node
*/
typedef struct NODE
{
char num;
struct NODE *next;
} List;

List* init()
{
List* node=(List*)malloc(sizeof(List));
node->next=NULL;
return node;
}

void lastAdd(List* L,char val)
{
List* node=(List*)malloc(sizeof(List));
node->num=val;
while(L->next)
{
L=L->next;
}
L->next=node;
node->next=NULL;
}

void preAdd(List* L,char val)
{
List* node=(List*)malloc(sizeof(List));
node->num=val;
node->next=L->next;
L->next=node;
}

List* getLast(List* L)
{
List* node=L;
while(node->next)
{
node=node->next;
}
return node;
}

void dele_last_node(List* L)
{
List *p=L,*q;
while(p->next)
{
if(p->next->next)
{
p=p->next;
}
else
{
q=p;
p=p->next;
// q=p;
}
}

free(p);
q->next=NULL;
}

void println(List* L)
{
if(!L->next)
{
printf("Empty List,Break\n");
return;
}
else
L=L->next;

while(L)
{
printf("%C",L->num);
L=L->next;
}
printf("\n");
}

int getSize(List* L)
{
int size=0;
List* p=L->next;
while(p)
{
size++;
p=p->next;
}
return size;
}

char toc(int i)
{
return (char)(i+48);
}

int toi(char c)
{
return ((int)c)-48;
}

List* changeToList(int N)
{
List* list=init();
// int level=10;
int interVal=N/10,floVal=N%10;
while(interVal)
{
preAdd(list,toc(floVal));
// interVal=interVal/10;
floVal=interVal%10;
interVal=interVal/10;
}
preAdd(list,toc(floVal));
// println(list);
return list;
}
/*
val less than 10
*/
List* singleStep(List* L,int val)
{
List* p=L;
/*
goto the end
*/
while(p->next)
{
p=p->next;
}
//now p is a pointer to point the last node
int calcu[2]={0,0};//Calculation useful
List* newlist=init();//newlist is a list to save new value for calculation
while(L->next)
{

int temp=toi(getLast(L)->num);
int temp_val=temp*val+calcu[0];
// printf("%d,%d,%d,%d\n",calcu[0],calcu[1],temp,temp_val);
calcu[0]=temp_val/10;
calcu[1]=temp_val%10;
// printf("%d,%d,%d,%d\n",calcu[0],calcu[1],temp,temp_val);
preAdd(newlist,toc(calcu[1]));
dele_last_node(L);
}
if(calcu[0])
{
preAdd(newlist,toc(calcu[0]));
}
// println(newlist);
return newlist;

}

List* copy(List* L)
{
List* newList=init();
List* p=newList;
L=L->next;
while(L)
{
List* node=(List*)malloc(sizeof(List));
node->num=L->num;
node->next=NULL;
p->next=node;
L=L->next;
p=p->next;
}
return newList;
}

List* add_list(List* fir,List* sec)
{
int size_fir=getSize(fir);
int size_sec=getSize(sec);
int add_arr[2]={0,0};
// printf("first_size=%d,second_size=%d\n",size_fir,size_sec);
List* value_list=init();//value

/*
compare two num to add calculation
*/
if(size_fir==size_sec)
{
// printf("Run size_fir=size_sec!\n");
while(fir->next)
{
int ifir=toi(getLast(fir)->num);
int isec=toi(getLast(sec)->num);
int temp=ifir+isec+add_arr[0];
// printf("%d,%d\n",add_arr[0],add_arr[1]);
add_arr[0]=temp/10;
add_arr[1]=temp%10;
preAdd(value_list,toc(add_arr[1]));
dele_last_node(fir);
dele_last_node(sec);
}
return value_list;

}
if(size_fir<size_sec)
{
// printf("Run size_fir<size_sec!\n");
while(fir->next)
{
int ifir=toi(getLast(fir)->num);
int isec=toi(getLast(sec)->num);
int temp=ifir+isec+add_arr[0];
add_arr[0]=temp/10;
add_arr[1]=temp%10;
// printf("%d,%d,%d,%d\n",ifir,isec,add_arr[0],add_arr[1]);
preAdd(value_list,toc(add_arr[1]));
dele_last_node(fir);
dele_last_node(sec);
}
while(sec->next)
{
int single=toi(getLast(sec)->num);
int val_temp=single+add_arr[0];
add_arr[0]=val_temp/10;
add_arr[1]=val_temp%10;
// printf("%d,%d,%d,%d\n",single,val_temp,add_arr[0],add_arr[1]);
preAdd(value_list,toc(add_arr[1]));
dele_last_node(sec);
}
return value_list;

}

if(size_fir>size_sec)
{
// printf("Run size_fir>size_sec!\n");
while(sec->next)
{
int ifir=toi(getLast(fir)->num);
int isec=toi(getLast(sec)->num);
int temp=ifir+isec+add_arr[0];
add_arr[0]=temp/10;
add_arr[1]=temp%10;
preAdd(value_list,toc(add_arr[1]));
dele_last_node(fir);
dele_last_node(sec);
}
while(fir->next)
{
int single=toi(getLast(fir)->num);
int val_temp=single+add_arr[0];
add_arr[0]=val_temp/10;
add_arr[1]=val_temp%10;
preAdd(value_list,toc(add_arr[1]));
dele_last_node(fir);
}
return value_list;
}
}
// List* add_arr[MAXSIZE];//use list array to add
List* calcu_big_num(List* fir,List* sec)
{
List* add_arr[MAXSIZE];//use list array to add
// List* add_arr=(List*)malloc(sizeof(List)*MAXSIZE);
size_t level=0;
while(sec->next)
{
//add_arr[level]=init();
// List* cal_tmp=init();
List* copy_fir=copy(fir);
// println(copy_fir);
List* cal_tmp=singleStep(copy_fir,toi(getLast(sec)->num));
// println(cal_tmp);
// add_arr[level]=cal_tmp;
// add_arr[level]=singleStep(fir,toi(getLast(sec)->num));
// level++;
// println(cal_tmp);
size_t size=level;
while(size)
{
lastAdd(cal_tmp,toc(0));
size--;
}
add_arr[level]=cal_tmp;
dele_last_node(sec);
level++;
// add_arr[]
}

List* value_list=add_arr[0];//value list

//add some temp list
size_t i=0;
for(;i<level-1;++i)
{
value_list=add_list(value_list,add_arr[i+1]);
}

return value_list;
}

main()
{
// List* l=N_main(1234);
printf("This Programming is calculation a number N's redirect without size limitation!\nNow Put a number N:\n");
int n;
scanf("%d",&n);
assert(n);
assert(changeToList(n)->next);
printf("Calculating...\n");
List* value=changeToList(n);
// printf("change to list complete...\n");
// println(value);


while(--n&&n!=1)
{

List* tmp=changeToList(n);
// println(tmp);
value=calcu_big_num(value,tmp);
println(value);
}

// List* l=changeToList(n);
printf("Completed!Value is:\n");
println(value);

}

转载于:https://www.cnblogs.com/dp-tel/archive/2012/09/06/2673701.html

http://www.jmfq.cn/news/4781503.html

相关文章:

  • 一个网站开发需要多久/昆明网络推广公司排名
  • 在线登录qq聊天/文登seo排名
  • 做搜狗手机网站优化/网站建设公司是怎么找客户
  • 王稳庄网站建设/竞价代运营
  • 苏州网站建设最好/刷移动端seo软件
  • 怎样用hbuilder做网站/seo优化知识
  • 泉州制作网站公司/营销策略是什么
  • 网站排名优化怎么做/宁波seo服务
  • 赣州企业网站建设公司/品牌传播策划方案
  • 网络公关公司收费/百度seo优化网站
  • 比较国内外政府门户网站建设特点/小程序开发教程
  • 盐山县做网站/商品推广
  • 凡科建网站/网络营销模式有哪几种
  • 楚雄建网站/网站关键词优化的步骤和过程
  • 开发网站需要多少人/互联网广告销售
  • 太原免费自助建站模板/新闻联播今日新闻
  • 怎么做网站加盟/互联网营销行业前景
  • 填写网站信息/石家庄百度快照优化排名
  • 动态网站订单怎么做/推广下载app赚钱
  • 两个人做类似的梦 网站/程序员培训机构排名前十
  • 网站建设的背景有哪些/磁力狗
  • 山西省网站建设制作/公众号seo排名软件
  • 厦门网站建设方案服务/广州新塘网站seo优化
  • 美食网站界面设计/商品推广与营销的方式
  • 了解网站建设的流程/东莞疫情最新消息今天新增
  • 高端上海网站设计公司价格/重庆网站优化排名推广
  • 树莓派做网站服务器/销售网络平台
  • 网站最新一次改版时间什么意思/免费私人网站建设
  • 开发技术网站开发技术/哪个杭州seo好
  • 哪个网站音乐做的最好/谷歌浏览器网页版进入