Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
//2007年上海交通大学计算机研究生机试题 Old Bill基本比较水。。

1. Old Bill
    暴力枚举
//2007年上海交通大学计算机研究生机试题 Old Bill
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>

int n;

int main() {
    
int i, j, a, b, c, tp;
    
while(~scanf("%d"&n)) {
        scanf(
"%d %d %d"&a, &b, &c);
        
for(i = 9; i >= 0--i) {
            
for(j = 9; j >= 0--j) {
                tp 
= i * 10000 + a * 1000 + b * 100 + c * 10 + j;
                
if(tp % n == 0goto M;
            }
        }
        puts(
"0");
        
continue;
M:      printf(
"%d %d %d\n", i, j, tp / n);
    }
    
return 0;
}


2. Powerful Calculator
    C++好纠结。。最终还是败在高精度减法上了。。JAVA水过。。最近一定要再C++敲下。。毕竟上机考试各种JAVA不让用的。。
import java.util.*;
import java.math.*;
 
public class Main {
    
public static void main(String args[]) {
        Scanner cin 
= new Scanner(System.in);
        BigInteger a, b;
        
while(cin.hasNext()) {
            a 
= cin.nextBigInteger();
            b 
= cin.nextBigInteger();
            System.out.println(a.add(b));
            System.out.println(a.subtract(b));
            System.out.println(a.multiply(b));
        }
    }
}


3. Sum of Factorials
    有点像01背包的思路。。不过只是标记是否能取到,不用取最值
    PS: 0!=1,别忘了。。WA*1。。
//2007年上海交通大学计算机研究生机试题 Sum of Factorials
#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>

int f[10= {112624120720504040320362880};
int n, dp[1000010];

int main() {
    
int i, j;
    memset(dp, 
0sizeof(dp));
    dp[
0= 1;
    
for(i = 0; i < 10++i) {
        
for(j = 1000000; j >= f[i]; --j) {
            
if(dp[j - f[i]]) dp[j] = 1;
        }
    }
    
while(~scanf("%d"&n)) {
        
if(dp[n]) puts("YES");
        
else
            puts(
"NO");
    }
    
return 0;
}


4. Zero-complexity Transposition
    以为有什么trick呢。。结果long long水过
//2007年上海交通大学计算机研究生机试题 Zero-complexity Transposition
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int n;
long long a[10010];

int main() {
    
int i;
    
while(~scanf("%d"&n)) {
        
for(i = 0; i < n; ++i) scanf("%lld"&a[i]);
        
for(i = n - 1; i > 0--i) printf("%lld ", a[i]);
        printf("%lld\n", a[0]);
    }
    
return 0;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理