手機演算法題
做了一下,代碼如下,樓主可以驗證看看,有不對的地方可以找我改:
importjava.io.IOException;
importjava.util.Scanner;
publicclassTest{
publicstaticvoidmain(String[]args)throwsIOException{
Scannersc=newScanner(System.in);
System.out.print("請輸入2個整數(以,隔開):");
Stringstr=sc.nextLine();
intn=Integer.parseInt(str.split(",")[0]),m=Integer.parseInt(str.split(",")[1]),flag=0;
longnum=(long)Math.pow(10,n);
int[]numArray=newint[m];
StringtempA="",tempB="";
for(inti=0;i<m;i++){
System.out.print("請輸入第"+(i+1)+"個整數:");
numArray[i]=sc.nextInt();
tempA=numArray[i]+"";
flag=0;
for(intj=0;j<i;j++){
tempB=numArray[j]+"";
if(tempA.startsWith(tempB)){
flag=1;
break;
}elseif(tempB.startsWith(tempA)&&tempB.length()!=tempA.length()){
flag=1;
num-=(long)Math.pow(10,n-tempA.length())-(long)Math.pow(10,n-tempB.length());
break;
}
}
if(flag==0)num-=(long)Math.pow(10,n-tempA.length());
}
System.out.println(num);
}
}
示例1:
請輸入2個整數(以,隔開):7,3
請輸入第1個整數:0
請輸入第2個整數:1
請輸入第3個整數:911
7990000
示例2:
請輸入2個整數(以,隔開):10,3
請輸入第1個整數:0
請輸入第2個整數:1
請輸入第3個整數:911
7990000000
示例3:
請輸入2個整數(以,隔開):3,2
請輸入第1個整數:1
請輸入第2個整數:11
900
樓主若覺得有所幫助,望採納,謝謝!
Ⅱ 手機有50元錢,買衣服花了20還剩30、買拖鞋花了15還剩15買糖果花了9塊還剩6元,買零食花了6
表格看起來順利成章!買拖鞋15,又買糖9,剩6,6+9=15,15+15=30,給人一種心裡暗示,暗示兩邊總和是相等的!咳咳,別急,回到買衣服剩的30元,30元包括買拖鞋15元,買糖9元,買食品6元,15+9+6=30,這樣算是對的!其實問題出在兩個6元,看好了!!! 剩下的6元,和買食品的6元是不一樣的!!!他們在兩個分類的表格,相當於剩下的15元,和買糖的9元,能一樣嗎???試想如果買食品花5元,花4元,,如何???從一開始花15剩15,作者就在給大家做心裡暗示!!後面巧妙的選擇用9元,再用完剩下的6元,這是表格出現兩個6,作者的目的達到了,你已經完全被洗腦了!直接崩潰了吧!如果非要表格成立買糖花10元,完美成立!!!到這樣就沒意義了,再次提醒!!!買東西花的錢,和剩下的錢,能相等嗎???他們是兩個分類表格!!! 只有剩的錢 和 花的錢 加起來才等於 所有的錢數!!!這是一個數字迷宮啊,相同的數字,相加相等的數字,巧合多次出現,導致你直接瞎了眼!!!回答完畢!看不懂的同學把答案抄寫100遍!!!掌聲在哪裡!!!
Ⅲ 手機流量演算法問題
60m?浙江沒60m的吧 你直接登錄移動夢網查 他是總流量的
Ⅳ 一道編程演算法題
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define EPS 1E-6
typedef struct item {
double coefficient;
int power;
struct item *next;
} *POLYNOMIAL,*pItem;
POLYNOMIAL Create() { // 創建多項式
pItem head,p;
double coe;
int pwr,iterms,i;
head = p = (pItem)malloc(sizeof(struct item));
scanf("%d",&iterms); // 讀入多項式的項數
for(i = 0; i < iterms; ++i) {
scanf("%lf%d",&coe,&pwr);
p->next = (pItem)malloc(sizeof(struct item));
p->next->coefficient = coe;
p->next->power = pwr;
p = p->next;
}
p->next = NULL;
return head;
}
void Sort(POLYNOMIAL head) { // 按冪次降排序
pItem pt,q,p = head;
while(p->next) {
q = p->next;
while(q->next) {
if(p->next->power < q->next->power) {
pt = p->next;
p->next = q->next;
q->next = p->next->next;
p->next->next = pt;
}
else q = q->next;
}
p = p->next;
}
}
void Show(POLYNOMIAL head) { // 顯示
POLYNOMIAL p = head->next;
int flag = 1;
if(p == NULL) return;
while(p) {
if(flag) {
if(fabs(p->coefficient) >= EPS) {
if(p->power == 0) printf("%.2lf",p->coefficient);
else if(p->power == 1) {
if(p->coefficient == 1.0) printf("x ");
else if(p->coefficient == -1.0) printf("-x ");
else printf("%.2lfx ",p->coefficient);
}
else if(p->coefficient == 1.0) printf("x^%d ",p->power);
else if(p->coefficient == -1.0) printf("-x^%d ",p->power);
else printf("%.2lfx^%d ",p->coefficient,p->power);
flag = 0;
}
}
else if(p->coefficient > 0.0 && fabs(p->coefficient) >= EPS) {
if(p->power == 0) printf("+ %.2lf ",p->coefficient);
else if(p->power == 1) {
if(p->coefficient == 1.0) printf("+ x ");
else printf("+ %.2lfx ",p->coefficient);
}
else if(p->coefficient == 1.0) printf("+ x^%d ",p->power);
else printf("+ %.2lfx^%d ",p->coefficient,p->power);
}
else if(p->coefficient < 0.0 && fabs(p->coefficient) >= EPS) {
if(p->power == 0) printf("- %.2lf ",-p->coefficient);
else if(p->power == 1) {
if(p->coefficient == -1.0) printf("- x ");
else printf("- %.2lfx ",-p->coefficient);
}
else if(p->coefficient == -1.0) printf("- x^%d ",-p->power);
else printf("- %.2lfx^%d ",-p->coefficient,p->power);
}
p = p->next;
}
printf("\n");
}
double Power(double x,int n) {
double value = 1.0;
int i;
for(i = 0; i < n; ++i) value *= x;
return value;
}
double Value(POLYNOMIAL head,double x) { // 多項式求值
POLYNOMIAL p;
double value = 0.0;
for(p = head->next; p; p = p->next)
value += p->coefficient * Power(x,p->power);
return value;
}
POLYNOMIAL Copy(POLYNOMIAL A) {
POLYNOMIAL head,t,p;
head = t = (pItem)malloc(sizeof(struct item));
for(p = A->next; p; p = p->next) {
t->next = (pItem)malloc(sizeof(struct item));
t->next->coefficient = p->coefficient;
t->next->power = p->power;
t = t->next;
}
t->next = NULL;
return head;
}
POLYNOMIAL Additive(POLYNOMIAL A, POLYNOMIAL B) { // 多項式加
POLYNOMIAL head,p,q,t;
head = Copy(A);
for(p = B; p->next; p = p->next) {
q = head;
while(q->next) {
if(p->next->power == q->next->power) {
q->next->coefficient += p->next->coefficient;
if(fabs(q->next->coefficient) <= EPS) {
t = q->next;
q->next = t->next;
free(t);
}
break;
}
q = q->next;
}
if(q->next == NULL) {
q->next = (pItem)malloc(sizeof(struct item));
q->next->coefficient = p->next->coefficient;
q->next->power = p->next->power;
q->next->next = NULL;
}
}
Sort(head);
return head;
}
POLYNOMIAL Subtract(POLYNOMIAL A, POLYNOMIAL B) { // 多項式減
POLYNOMIAL head,p,q,t;
head = Copy(A);
for(p = B; p->next; p = p->next) {
q = head;
while(q->next) {
if(p->next->power == q->next->power) {
q->next->coefficient -= p->next->coefficient;
if(fabs(q->next->coefficient) <= EPS) {
t = q->next;
q->next = t->next;
free(t);
}
break;
}
q = q->next;
}
if(q->next == NULL) {
q->next = (pItem)malloc(sizeof(struct item));
q->next->coefficient = -p->next->coefficient;
q->next->power = p->next->power;
q->next->next = NULL;
}
}
Sort(head);
return head;
}
POLYNOMIAL Multiplication(POLYNOMIAL A, POLYNOMIAL B) { // 多項式乘
POLYNOMIAL head,t,p,q;
head = t = (pItem)malloc(sizeof(struct item));
for(p = A->next; p; p = p->next) { // 完成相乘過程
for(q = B->next; q; q = q->next) {
t->next = (pItem)malloc(sizeof(struct item));
t->next->coefficient = p->coefficient * q->coefficient;
t->next->power = p->power + q->power;
t = t->next;
}
}
t->next = NULL;
Sort(head); // 排序
p = head;
while(p->next) { // 合並同類項
q = p->next;
while(q->next) {
if(p->next->power == q->next->power) {
p->next->coefficient += q->next->coefficient;
t = q->next;
q->next = t->next;
free(t);
}
else q = q->next;
}
p = p->next;
}
return head;
}
void FreeMemory(POLYNOMIAL head) {
POLYNOMIAL q,p = head;
while(p) {
q = p;
p = q->next;
free(q);
}
}
int main() {
char ops[3];
POLYNOMIAL A,B,C = NULL,D = NULL,E = NULL;
printf("創建多項式A:\n");
printf("多項式A的項數:");
A = Create();
Sort(A);
printf("A(x) = ");Show(A);
printf("創建多項式B:\n");
printf("多項式B的項數:");
B = Create();
Sort(B);
printf("B(x) = ");Show(B);
printf("運算符 : ");
fflush(stdin);
gets(ops);
for(int i = 0; ops[i]; ++i) {
switch(ops[i]) {
case '+' : C = Additive(A,B);
printf("C(x) = ");
Show(C);
break;
case '-' : D = Subtract(A,B);
printf("D(x) = ");
Show(D);
break;
case '*' : E = Multiplication(A,B);
printf("E(x) = ");
Show(E);
break;
default : printf("不能識別運算符 : %s\n",ops[i]);
}
}
printf("A(2) = %.2lf\n",Value(A,2.0));
printf("B(2) = %.2lf\n",Value(B,2.0));
if(C) {
printf("C(2) = %.2lf\n",Value(C,2.0));
FreeMemory(C);
}
if(D) {
printf("D(2) = %.2lf\n",Value(D,2.0));
FreeMemory(D);
}
if(E) {
printf("E(2) = %.2lf\n",Value(E,2.0));
FreeMemory(E);
}
FreeMemory(A);
FreeMemory(B);
return 0;
}
Ⅳ iphone5s計算機77-38.5=0為什麼
7-38.5等於0?最近,朋友圈裡盛傳,「近日蘋果官方正式發布問題蘋果手機召回通知,由於蘋果手機內置計算器功能問題,而導致計算功能出錯,用蘋果計算器來計算77-38.5,如果結果等於0的,均為問題機器,可以立即到指定維修點申請更換新機。」
關於蘋果手機計算器算賬時竟出現這樣的情況,不少網友不淡定了,在紛紛試過之後,發現真的會算出0,於是「蘋果問題手機」的說法在朋友圈傳播起來,不少人的腎又開始隱隱作痛。
觀察者網小編拿起一部iPhone手機,馬上開始進行了運算。小編輸入77-38.5,按一下「=」之後,咦,沒反應?還是38.5,再按一下「=」,結果真的變成了0!難道蘋果手機真不會算數了么?難道這樣真的可以免費更換新的蘋果手機了?
第一次按「=」結果
小編再次試過之後,發現總是在試過兩次之後,屏幕才會出現0,小編經過查詢發現,其實這是蘋果手機的演算法問題,在計算器上輸入「77-38.5」後,屏幕顯示的是最後輸入38.5這個的數字,其實這已經是計算結果了。但是很多人以為還沒有按上等號,屏幕沒有變化,所以就會下意識地再按一次「=」鍵。而根據蘋果計算機的運行原理,此時再按一次等號鍵,就是重復上一步的操作,再次減了38.5,結果就變成0了。
換句話說,使用蘋果計算器,因其演算法的設置,只要是被減數是減數的2倍,再按了兩次「=」鍵,那麼結果就都會是0,比如說「2-1」,結果也等於「0」。
所以,對於「近日蘋果官方正式發布問題蘋果手機召回通知,有此問題可以立即到指定維修點申請更換新機」的說法,就自然是逗你玩兒了。據蘋果官方售後人員透露,暫時還沒有接到任何召回通知。
不過,對於這一問題的出現,不少網友認為蘋果計算器確實存在一定問題,暴露出蘋果計算器在這一細節的處理上不太「人性化」。
Ⅵ Android面試題——演算法篇
//採用遞歸法
//遞歸法
//循環法
題目描述:
二叉樹排序樹
首先定義節點類
創建二叉排序樹的時候隨便傳入一個int型數組a[]
然後通過自頂向下的方式一個一個的將a[0]---a[n]個元素創建的節點類一個一個的拼接到樹上
此後只需要再創建一個主函數類來調用便行了
希望大家能有一個好心態,想進什麼樣的公司要想清楚,並不一定是大公司,我選的也不是特大廠。當然如果你不知道選或是沒有規劃,那就選大公司!希望我們能先選好想去的公司再投或內推,而不是有一個公司要我我就去!還有就是不要害怕,也不要有壓力,平常心對待就行,但准備要充足。最後希望大家都能拿到一份滿意的 offer !如果目前有一份工作也請好好珍惜好好努力,找工作其實挺累挺辛苦的。
Ⅶ 有一幢100樓的大廈,兩部手機,讓你設計一種演算法確切地知道這部手機在第幾樓摔下會壞,演算法要盡量優化.
我覺得這是一個不等式問題。
第一步手機是用來決定在0-100層之間需要劃分幾個區間
第二步手機是用來在已發現可以導致手機摔壞的區間內一級一級往上加樓層已具體測試是哪一層的工具。
假設第一步手機劃分的區間為a個,每個區間包含的層數為b。
則可以得出a*b=100。
所謂的最優化,既是讓測試的次數盡量最小,即讓a+b+1次數盡量最小,也就是讓a+b最小。
現在就簡單了,轉化為一個數學題。已知a*b=100,問當a+b取最小值時,a=?,b=?。
這個問題我就不回答了,在場的估計有90%以上的人能得出當a=b=10時,a+b取最小值。
具體做法就是:
將一部手機從10樓扔下,如果壞,則拿第二部手機從一樓開始,逐層往上試,則實驗最大次數為10+1=11次。
如果沒壞,則將第一部手機從20樓仍下,如果壞,則將第二部手機從11樓開始,逐層往上試,實驗最大次數為10+2=12次。
以此類推,當第一部手機從第90層扔下時,如果壞,則從81曾逐層往上,如不壞,也不用從第一百層扔了,從91層開始吧。
Ⅷ 面試會出哪些經典演算法題
如下:
1、排序演算法∶快速排序、歸並排序、計數排序
2、搜索演算法∶回溯、遞歸、剪枝技巧
3、圖論∶最短路、最小生成樹、網路流建模
4、動態規劃:背包問題、最長子序列、計數問題
5、基礎技巧:分治、倍增、二分、貪心
6、數組與鏈表:單/雙向鏈表、跳舞鏈
7、棧與隊列
8、樹與圖:最近公共祖先、並查集
9、哈希表
10、堆:大/小根堆、可並堆
11、字元串∶字典樹、後綴樹
演算法簡介:
演算法(Algorithm)是指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。
如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。
演算法中的指令描述的是一個計算,當其運行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出並停止於一個終態。一個狀態到另一個狀態的轉移不一定是確定的。隨機化演算法在內的一些演算法,包含了一些隨機輸入。
形式化演算法的概念部分源自嘗試解決希爾伯特提出的判定問題,並在其後嘗試定義有效計算性或者有效方法中成形。
這些嘗試包括庫爾特·哥德爾、Jacques Herbrand和斯蒂芬·科爾·克萊尼分別於1930年、1934年和1935年提出的遞歸函數,阿隆佐·邱奇於1936年提出的λ演算,1936年Emil Leon Post的Formulation 1和艾倫·圖靈1937年提出的圖靈機。即使在當前,依然常有直覺想法難以定義為形式化演算法的情況。