9.20顺丰科技笔试最后两个编程题

1.公式推导出B(i)=A(i)+A(i+1),代码就不写了
2.判断不大于n的幸运数(定义由4和7组成的数位幸运数)
思路:判断每一位是不是7或者4,如果到最后一位还是7或者4,就是幸运数,中间但凡有一位不是7或者4,这个数就不是幸运数
import java.util.Scanner;
public class Main {
public static int[] num=new int[65536];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
int n = sc.nextInt();
int sum = 0;
for (int i = 1; i <= n; i++) {
String str = String.valueOf(i);
char[] ch = str.toCharArray();
int j=ch.length-1;
if(j>=0) {
while (j>=0&&(ch[j] == '4' || ch[j] == '7')) {
j--;
}
if (j == -1) {
sum++;
}
}
}
System.out.println(sum);
}
}
}

全部评论
什么岗位又算法题,我投的计算机视觉就没有算法题
点赞 回复 分享
发布于 2017-10-23 00:48
第二题n多大?显然是个数位统计
点赞 回复 分享
发布于 2017-09-21 00:55
一样的思路,10%的通过,不知为何
点赞 回复 分享
发布于 2017-09-20 23:11
一开始想到推公式但是觉得好像不可行,后来发现编码简单可以不需要公式 #include <iostream> #include <vector> #include <numeric> #include <limits> using namespace std; vector<int> solve(vector<int> a) {     int len = a.size();     vector<int> vec;     vec.resize(len);     int temp = 0;     vec[len - 1] = a[len - 1];     for (int i = len - 2; i >= 0; i--) {         int j = i + 1;         temp = vec[j] - temp;         vec[i] = a[i] + temp;     }     return vec; }
点赞 回复 分享
发布于 2017-09-20 22:50
int肯定溢出啊。你这个AC 了????
点赞 回复 分享
发布于 2017-09-20 22:41
第二题能ac吗,用int不会溢出?
点赞 回复 分享
发布于 2017-09-20 22:39

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务