手机算法题
做了一下,代码如下,楼主可以验证看看,有不对的地方可以找我改:
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年提出的图灵机。即使在当前,依然常有直觉想法难以定义为形式化算法的情况。