public static void main(String[] args) { int count = 0; // 100*100*100 = 1000000(7位),即使7位全部为9,也不可能,大于100的就更不可能了 for (int i = 1; i < 100; i++) { int result = i * i * i; char[] array = String.valueOf(result).toCharArray(); int sum = 0; StringBuilder builder = new StringBuilder(); for (int j = 0; j < array.length; j++) { sum += Integer.valueOf(array[j] - 48); if (j != 0) { builder.append("+"); } builder.append(array[j]); } if (i == sum) { count++; System.out.println(i + "^3=" + result + "," + i + "=" + builder.toString()); } } System.out.println("count=" + count); } }
public static int f(int n, int m) { n = n % m; Vector v = new Vector(); for(;;) { v.add(n); n *= 10; n = n % m; if(n==0) return 0; if(v.indexOf(n)>=0) _________________________________ ; //填空 } }
int sum; for (int i = 1; i < 49; i++){ for (int j = i+2; j < 49; j++) { sum = 1225; sum -= i+i+1+j+j+1;//减去四个相乘的数 sum += i*(i+1)+j*(j+1); if(sum == 2015) { System.out.println("i=" + i + ",j=" + j); } } } }
int sum = 0; // 总共有48个加号,符号的下标即为左边的数字 for (int i = 1; i < 49; i++) { // 乘号之间至少间距2 for (int j = i + 2; j < 49; j++) { sum = 0; for (int k = 1; k < 50; k++) { if (i == k || j == k) { sum += k * (k + 1); k++;//两个数相乘,要略过for循环一次 } else { sum += k; } } if (sum == 2015) { System.out.println("i=" + i + ",j=" + j); } } } }
public class Main { public static void main(String[] args) { long sum = 0; Scanner sc = new Scanner(System.in); long n = sc.nextLong(); sum += n; while(n >= 3) { long n2 = n / 3; sum += n2; n = n2 + n % 3;//目前拥有的瓶盖 = 换来的饮料+剩余的瓶盖(不是3的别倍数的时候会有) } System.out.println(sum); }
public class Main { static int MOD = (int) (1e9 + 7);
public static void main(String[] args) { int[][] ar = new int[40][40]; int[] mm = { 0, 4, 5, 6, 1, 2, 3 }; long[][] dp = new long[2][7]; Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); for (int i = 0; i < m; i++) { int u = in.nextInt(); int v = in.nextInt(); ar[u][v] = 1; ar[v][u] = 1; }
int pre = 1; int now = 0; for (int i = 1; i < 7; i++) dp[0][i] = 4; for (int i = 2; i <= n; i++) { pre = (pre + 1) % 2; now = (now + 1) % 2; Arrays.fill(dp[now], 0); for (int j = 1; j < 7; j++) for (int k = 1; k < 7; k++) { dp[now][j] += (dp[pre][k] * 4) % MOD; } for (int j = 0; j < 7; j++) { for (int k = 0; k <= j; k++) if (ar[j][k] == 1) { dp[now][mm[j]] = (MOD + dp[now][mm[j]] - dp[pre][k] * 4) % MOD; dp[now][mm[k]] = (MOD + dp[now][mm[k]] - dp[pre][j] * 4) % MOD; } } } long ans = 0; for (int i = 1; i < 7; i++) ans = (ans + dp[now][i]) % MOD; System.out.println(ans);
public class Main { static int[] head1 = new int[100010]; static int[] head2 = new int[100010]; static int[] node = new int[100010]; static Edge[] edge1 = new Edge[300010]; static Edge[] edge2 = new Edge[300010]; static int[] degree = new int[100010]; static int[] fa = new int[100010]; static int tot1 = 0, tot2 = 0; static int Node; static long[] max = new long[100010]; static long ans = Long.MIN_VALUE;
static void add1(int u, int v) { edge1[tot1].u = u; edge1[tot1].v = v; edge1[tot1].nxt = head1[u]; head1[u] = tot1++; }
static void add2(int u, int v) { edge2[tot2].u = u; edge2[tot2].v = v; edge2[tot2].nxt = head2[u]; head2[u] = tot2++; }
static void dfs(int u, int par, long nn) { max[u] = nn; fa[u] = u; for (int i = head1[u]; i != -1; i = edge1[i].nxt) { int v = edge1[i].v; if (v == par) continue; dfs(v, u, nn + node[v]); fa[v] = u; } for (int i = head2[u]; i != -1; i = edge2[i].nxt) { int v = edge2[i].v; if (max[v] != Long.MAX_VALUE) { ans = Math.max(ans, max[v] + max[u] - max[parent(v)]); } } }
static int parent(int x) { if (fa[x] == -1 || fa[x] == x) return x; return fa[x] = parent(fa[x]); }
public static void main(String[] args) { Scanner in = new Scanner(System.in); Node = in.nextInt(); for (int i = 0; i < Node; i++) node[i] = in.nextInt(); for (int i = 0; i <= Node + Node; i++) edge1[i] = new Edge(); for (int i = 0; i <= Node * Node * 2; i++) edge2[i] = new Edge(); Arrays.fill(fa, -1); Arrays.fill(head1, -1); Arrays.fill(head2, -1); Arrays.fill(max, Long.MAX_VALUE); for (int i = 1; i < Node; i++) { int u, v; u = in.nextInt() - 1; v = in.nextInt() - 1; degree[u]++; degree[v]++; add1(u, v); add1(v, u); } for (int i = 0; i < Node; i++) for (int j = 0; j < Node; j++) { add2(i, j); add2(j, i); } if (Node == 2) { System.out.println(node[0] + node[1]); return; } dfs(0, -1, node[0]); System.out.println(ans); } }