| ZOJ 3406 |
Another Very Easy Task |
#include
#include
const int N = 100005; char s[N]; int main() { bool f = 0; int size = 0; char ch; while(scanf("%c", &ch)!=EOF) { if( !(ch >= 'a' && ch <='z') && !(ch >='A' && ch <= 'Z')) { if(size <= 2) { s[size] = '\0'; printf("%s", s); } else { printf("%c%d%c", s[0], size-2, s[size-1]); } size = 0; printf("%c", ch); } else { s[size++] = ch; } } return 0; }
| ZOJ 3407 |
Doraemon's Cake Machine |
#include
#include
#include
#include
#include
using namespace std; typedef long long ll; int Rand(int l,int r){ int ans = rand()%r+1; while(ans
0) { cin >> n >> m; // n = Rand(1,6000000), m = Rand(0,10000); if(m == 0) { if(n == 1) puts("0"); else puts("-1"); continue; } if(m >= n) { puts("-1"); }else { ll d = 2 * (n-m) - 1; ll ans = -1; ans = 2 * m - n;// shu if(ans < 0) ans = -1; if(n==m+1)ans = 0; // heng for(ll i = 1; i * i <= d; i += 2) { if( d % i == 0 ) { ll a = (i + 1) / 2; ll b = (d / i - 1) / 2; ll c = m - a - b; if(c < 0) continue; if(ans == -1 || ans>c ){ // printf("%I64d %I64d %I64d %I64d\n", d, a, b, c); ans = c; } } } cout<
#include
#include
#include
#include
#include
| ZOJ 3411 |
Special Special Judge |
import java.io.*;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.util.Scanner;
public class Main {
BigInteger gcd(BigInteger a, BigInteger b) {
BigInteger tmp;
while(a.equals(BigInteger.ZERO)==false){
b = b.mod(a);
tmp = b;
b = a;
a = tmp;
}
return b;
}
public void work() {
int n, m, a, b, x;
BigInteger[][] d = new BigInteger[55][55];
BigInteger up, down, v;
while (cin.hasNext()) {
n = cin.nextInt();
m = cin.nextInt();
a = cin.nextInt();
b = cin.nextInt();
v = BigInteger.valueOf(b - a + 1);
for (int i = 0; i <= n; ++i)
for (int j = 0; j <= m; ++j)
d[i][j] = BigInteger.ZERO;
d[0][0] = BigInteger.ONE;
for (int i = 0; i < n; ++i) {
x = cin.nextInt();
for (int j = 0; j <= m; ++j)
if (d[i][j].compareTo(BigInteger.ZERO) > 0)
for (int z = a; z <= b; ++z)
if (Math.abs(x - z) + j <= m) {
d[i + 1][Math.abs(x - z) + j] = d[i + 1][Math
.abs(x - z) + j].add(d[i][j]);
}
}
up = BigInteger.ZERO;
for (int i = 0; i <= m; ++i)
up = up.add(d[n][i]);
down = BigInteger.ONE;
for (int i = 1; i <= n; ++i)
down = down.multiply(v);
v = gcd(up, down);
up = up.divide(v);
down = down.divide(v);
out.println(up + "/" + down);
}
out.close();
}
Main() {
cin = new Scanner(System.in);
out = new PrintWriter(System.out);
}
public static void main(String[] args) {
Main e = new Main();
e.work();
}
public Scanner cin;
public PrintWriter out;
}
#include
#include
#include
#include
using namespace std; #define eps (1e-8) const int N = 100005; bool Is0(double x){ return (x>0?x:-x)
=m)break; // last.put(); double t = dis(last, a[i]); if(t