日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

笔试题:计算N的阶乘

發布時間:2023/12/31 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 笔试题:计算N的阶乘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

public?class?test?
{
????
//簡單起見,不考慮負號的情況
????private?static?String?multipy(String?num1,?String?num2)
????{
//大數乘法
????????String?result?=?"0";
????????
int?i,j,n1,n2;
????????
int?len1?=?num1.length();
????????
int?len2?=?num2.length();
????????
if?(len1?<?len2)
????????{
????????????
for?(i?=?len1?-1;?i?>=0;?--i)
????????????{
????????????????n1?
=?num1.charAt(i)?-?'0';
????????????????String?sum?
=?"0";
????????????????
for?(j?=?0;?j?<?n1;?++j)
????????????????{
????????????????????sum?
=?add(sum,num2);
????????????????}
????????????????StringBuilder?tmpSB?
=?new?StringBuilder(sum);
????????????????
for?(j?=?i;?j?<?len1?-1;?++j)
????????????????{
????????????????????tmpSB.append(
"0");
????????????????}
????????????????result?
=?add(result,tmpSB.toString());
????????????}
????????}
????????
else
????????{
????????????
for?(i?=?len2?-1;?i?>=0;?--i)
????????????{
????????????????n2?
=?num2.charAt(i)?-?'0';
????????????????String?sum?
=?"0";
????????????????
for?(j?=?0;?j?<?n2;?++j)
????????????????{
????????????????????sum?
=?add(sum,num1);
????????????????}
????????????????StringBuilder?tmpSB?
=?new?StringBuilder(sum);
????????????????
for?(j?=?i;?j?<?len2?-1;?++j)
????????????????{
????????????????????tmpSB.append(
"0");
????????????????}
????????????????result?
=?add(result,tmpSB.toString());
????????????}
????????}

????????
return?result;
????}
????
private?static?String?add(String?num1,?String?num2)
????{
//大數加法
????????String?result?=?"";
????????
int?len1?=?num1.length();
????????
int?len2?=?num2.length();
????????int?nAddOn?=?0;//進位
????????int?i,j,n1,n2,sum;
????????StringBuilder?sb?
=?new?StringBuilder();
????????
for?(i?=?len1?-?1,j?=?len2?-?1?;?i?>=?0?&&?j?>=?0;?--i,--j)
????????{
????????????n1?
=?num1.charAt(i)?-?'0';
????????????n2?
=?num2.charAt(j)?-?'0';
????????????sum?
=?n1?+?n2?+?nAddOn;
????????????
????????????
if?(sum?>=?10)
????????????{
????????????????nAddOn?
=?1;
????????????}
????????????
else
????????????{
????????????????nAddOn?
=?0;
????????????}
????????????sb.append(sum?
%?10);
????????}
????????
if?(len1?>?len2)
????????{
//第一個有剩余
????????????for?(;?i?>=?0;?--i)
????????????{
????????????????n1?
=?num1.charAt(i)?-?'0';
????????????????sum?
=?n1?+?nAddOn;
????????????????
if?(sum?>=?10)
????????????????{
????????????????????nAddOn?
=?1;
????????????????}
????????????????
else
????????????????{
????????????????????nAddOn?
=?0;
????????????????}
????????????????sb.append(sum?
%?10);
????????????}
????????}
????????
else?if?(len2?>?len1)
????????{
//第二個有剩余
????????????for?(;?j?>=?0;?--j)
????????????{
????????????????n2?
=?num2.charAt(j)?-?'0';
????????????????sum?
=?n2?+?nAddOn;
????????????????
if?(sum?>=?10)
????????????????{
????????????????????nAddOn?
=?1;
????????????????}
????????????????
else
????????????????{
????????????????????nAddOn?
=?0;
????????????????}
????????????????sb.append(sum?
%?10);
????????????}
????????}
????????
????????
if?(nAddOn?>?0)
????????{
????????????sb.append(nAddOn);
????????}
????????
????????sb.reverse();
????????result?
=?sb.toString();
????????
return?result;
????}
????
private?static?String?factorial(int?n)
????{
????????String?result?
=?"1";
????????
for?(int?i?=?n;?i?>=?2;?--i)
????????{
????????????result?
=?multipy(result,String.valueOf(i));
????????}
????????
return?result;
????}
????
public?static?void?main(String[]?args)?throws?Exception
????{
????????
//計算100的階乘!
????????System.out.println(factorial(100));
????}

}
再來個c++版做對比

//簡單起見,不考慮負號的情況

#include?
<iostream>
#include?
<vector>
#include?
<algorithm>
using?namespace?std;

string?add(string?num1,?string?num2)
{
//大數加法
????string?result?=?"";
????
int?len1?=?num1.length();
????
int?len2?=?num2.length();
????
int?nAddOn?=?0;//進位
????int?i,j,n1,n2,sum;
????vector
<char>?tmpSum;

????
for?(i?=?len1?-?1,j?=?len2?-?1?;?i?>=?0?&&?j?>=?0;?--i,--j)
????{
????????n1?
=?num1[i]?-?'0';
????????n2?
=?num2[j]?-?'0';
????????sum?
=?n1?+?n2?+?nAddOn;

????????
if?(sum?>=?10)
????????{
????????????nAddOn?
=?1;
????????}
????????
else
????????{
????????????nAddOn?
=?0;
????????}
????????tmpSum.push_back(sum?
%?10?+?'0');
????}
????
if?(len1?>?len2)
????{
//第一個有剩余
????????for?(;?i?>=?0;?--i)
????????{
????????????n1?
=?num1[i]?-?'0';
????????????sum?
=?n1?+?nAddOn;
????????????
if?(sum?>=?10)
????????????{
????????????????nAddOn?
=?1;
????????????}
????????????
else
????????????{
????????????????nAddOn?
=?0;
????????????}
????????????tmpSum.push_back(sum?
%?10?+?'0');
????????}
????}
????
else?if?(len2?>?len1)
????{
//第二個有剩余
????????for?(;?j?>=?0;?--j)
????????{
????????????n2?
=?num2[j]?-?'0';
????????????sum?
=?n2?+?nAddOn;
????????????
if?(sum?>=?10)
????????????{
????????????????nAddOn?
=?1;
????????????}
????????????
else
????????????{
????????????????nAddOn?
=?0;
????????????}
????????????tmpSum.push_back(sum?
%?10?+?'0');
????????}
????}

????
if?(nAddOn?>?0)
????{
????????tmpSum.push_back(nAddOn?
+?'0');
????}
????reverse(tmpSum.begin(),tmpSum.end());
????copy(tmpSum.begin(),tmpSum.end(),back_inserter(result));
????
return?result;
}

string?multipy(string?num1,?string?num2)
{
//大數乘法
????string?result?=?"0";
????
int?i,j,n1,n2;
????
int?len1?=?num1.length();
????
int?len2?=?num2.length();
????
if?(len1?<?len2)
????{
????????
for?(i?=?len1?-1;?i?>=0;?--i)
????????{
????????????n1?
=?num1[i]?-?'0';
????????????
string?sum?=?"0";
????????????
for?(j?=?0;?j?<?n1;?++j)
????????????{
????????????????sum?
=?add(sum,num2);
????????????}

????????????
string?tmpSB(sum);
????????????
for?(j?=?i;?j?<?len1?-1;?++j)
????????????{
????????????????tmpSB.append(
"0");
????????????}
????????????result?
=?add(result,tmpSB);
????????}
????}
????
else
????{
????????
for?(i?=?len2?-1;?i?>=0;?--i)
????????{
????????????n2?
=?num2[i]?-?'0';
????????????
string?sum?=?"0";
????????????
for?(j?=?0;?j?<?n2;?++j)
????????????{
????????????????sum?
=?add(sum,num1);
????????????}
????????????
string?tmpSB(sum);
????????????
for?(j?=?i;?j?<?len2?-1;?++j)
????????????{
????????????????tmpSB.append(
"0");
????????????}
????????????result?
=?add(result,tmpSB);
????????}
????}

????
return?result;
}


string?factorial(int?n)
{
????
string?result?=?"1";
????
char?buff[100];
????
for?(int?i?=?n;?i?>=?2;?--i)
????{
????????result?
=?multipy(result,_itoa(i,?buff,10));
????}
????
return?result;
}

int?main()
{
????
int?N;
????
while?(cin?>>?N)
????{
????????cout?
<<?factorial(N).c_str()?<<?endl;
????}
????
return?0;
}

總結

以上是生活随笔為你收集整理的笔试题:计算N的阶乘的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黑人巨大精品一区二区在线 | 国产精品久久久久久久久久久新郎 | 爱爱爱免费视频 | 日韩高清久久 | 久久噜噜色综合一区二区 | 欧美春色 | 日日操日日爽 | 豆豆色成人网 | 亚洲人精品午夜射精日韩 | 一区二区三区四区亚洲 | 国产xxx69麻豆国语对白 | 国产亚洲精品精品国产亚洲综合 | 天天狠狠 | jzzijzzij亚洲成熟少妇在线观看 久久久精品人妻一区二区三区 | 午夜老湿机 | 伦伦影院午夜理伦片 | 欧美黄色片| 91网站永久免费看nba视频 | 国产l精品国产亚洲区久久 午夜青青草 | a∨视频| 亚洲综人 | 草草在线视频 | 少妇裸体性生交 | 中国zzji女人高潮免费 | 手机成人免费视频 | 午夜在线免费观看视频 | 一本大道熟女人妻中文字幕在线 | 狠狠操伊人 | 一级特黄aa大片欧美 | 久久久久久久久久久久91 | 麻豆网页 | 少妇精品导航 | 久久久久女人精品毛片九一 | 精品国产999 | 致单身男女免费观看完整版 | 激情五月综合色婷婷一区二区 | 久久国产加勒比精品无码 | 激情午夜网| 911亚洲精选 | 巨大乳の揉んで乳榨り奶水 | 丰满人妻一区二区三区53号 | 青少年xxxxx性开放hg | 亚洲乱码国产乱码精品精98午夜 | 国产精品一区久久 | 欧美三级韩国三级日本三斤在线观看 | 黄页网站在线 | 交专区videossex非洲 | 粉嫩久久99精品久久久久久夜 | 久草热在线视频 | 欧美色综合网站 | 黄色一级影片 | 香蕉国产在线观看 | 在线综合色 | 国精产品乱码一区一区三区四区 | 亚洲专区一区 | 91爱视频 | 挪威xxxx性hd极品 | 久久久无码人妻精品无码 | 欧美日韩免费一区二区三区 | 五月天色视频 | www日本com| www在线看| 国产亚洲精品女人久久久久久 | 国产在线一区二 | 亚洲精品另类 | 国产av电影一区二区三区 | 手机av不卡| 亚洲视频二区 | 精品成人无码一区二区三区 | 美国一级大黄一片免费中文 | 欧美日韩高清在线播放 | 奇米在线视频 | 国产吃瓜黑料一区二区 | 久久久久久久久久久久国产精品 | 大j8福利视频导航 | 日本精品免费在线观看 | 日中文字幕 | 激情综合久久 | av毛片观看 | 少妇精品无码一区二区免费视频 | 亚洲αv| 天天操夜夜操夜夜操 | 日韩免费视频一区二区视频在线观看 | 成人高潮片免费视频 | 欧美三级午夜理伦三级老人 | 超碰v| 国语精品久久 | 中文字幕av在线免费观看 | 神马午夜在线观看 | 草草草在线视频 | chinesepron hd videos国产91 | 日本打白嫩屁股视频 | www.国产黄色| 国产一级黄 | 成人av手机在线 | 中文人妻熟妇乱又伦精品 | 一区二区三区四区中文字幕 | 国产九色91回来了 | 久久蜜桃av一区二区天堂 |