結果
問題 | No.864 四方演算 |
ユーザー |
|
提出日時 | 2020-07-18 00:46:24 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 82 ms / 1,000 ms |
コード長 | 9,517 bytes |
コンパイル時間 | 2,977 ms |
コンパイル使用メモリ | 84,576 KB |
実行使用メモリ | 47,028 KB |
最終ジャッジ日時 | 2024-11-30 07:26:05 |
合計ジャッジ時間 | 6,209 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.NoSuchElementException;public class Main {public static void main(String[] args) {for(int i=0;i<1;i++) {slover();out.flush();}}static FastScanner sc = new FastScanner();static PrintWriter out = new PrintWriter(System.out);//StringBuffer S = new StringBuffer(sc.next());//String hoge2 = str.reverse().toString();//map.containsKey(A)//Map<Integer, Integer> map = new HashMap<Integer, Integer>(N);/*for ( キーのデータ型 key : マップの名前.keySet() ) {データのデータ型 data = マップの名前.get( key );// keyやdataを使った処理;}*///int i = Integer.parseInt(s);//Queue<String> qq=new ArrayDeque<>(); //add,poll,peek BFSは前から実行される//Deque<String> dd=new ArrayDeque<>();//push後ろに入れる,poll(pop)後ろからとる,peek addは先頭に入るからバグ注意//stackdfsは後ろから実行される//ArrayList<Integer> cc = new ArrayList<>(N);//cc.contains(tmp)//Arrays.asList(c).contains("a")//list.set(1,"walk");//1 1 2 3 5//PriorityQueue<Integer> r=new PriorityQueue<Integer>();//add pollprivate static int INF =1000000007;private static class D{int sum,count;D(int sum,int count){this.sum=sum;;this.count=count;}}//Set<Long> a=new HashSet<Long>();private static int mod=1000000007;private static ArrayList<Long> divisors2(long t) {ArrayList<Long> c=new ArrayList<>();for(int i=1;i*i<=t;i++) {if(t%i==0) {if(i*i!=t) {c.add(t/i);}c.add((long)i);}}Collections.sort(c);Collections.reverse(c);return c;}//Integer.toBinaryString(i);//Integer.toString(i, 2);// //Integer.parseInt(bin, 2);//bitsetprivate static int slover() {// f(x)=x^2-3;long N=sc.nextLong();long K=sc.nextLong();long ans=0;for(long i=1;i*i<=K;i++) {if(i==1)continue;if(K%i==0) {long t1=i;long t2=K/i;if(t1==1||t2==1)continue;long v1=0;long v2=0;if(t1-N>N||t2-N>N)continue;if(t1-1>N) {v1=Math.abs((t1-N)-N)+1;}else {v1=t1-1;}if(t2-1>N) {v2=Math.abs((t2-N)-N)+1;}else {v2=t2-1;}ans+=v1*v2;if(i!=K/i)ans+=v1*v2;}}p(ans);return 0;}private static int modPow2(String S,int mod) {//iのt乗をO(log t)で返すint a=2;int res=1;int N=S.length()-1;for(int i=0;i<S.length();i++) {if(S.charAt(N-i)=='1') {res=res*a%mod;}a=a*a%mod;}return res;}private static long modPow(int i,int t,long mod) {//iのt乗をO(log t)で返すlong a=i;long res=1;while(t!=0) {//p(t);if((1&t)==1) {res=res*a%mod;}a=a*a%mod;t=t>>1;}return res;}public static int pid(int i) {int t=0;int j=0;while((i>>j)!=0) {if((1&(i>>j))==1) {t++;}j++;}return i%t;}public static long gcd(long num1,long num2) {if(num2==0) return num1;else return gcd(num2,num1%num2);}public static long lcm(long num1,long num2) {return num1*num2/gcd(num1,num2);}//O(N^0.5)private static boolean isPrime(long t) {if(t<2)return false;for(int i=2;i*i<=t;i++) {if(t%i==0)return false;}return true;}private static ArrayList<Long> divisors(long t) {ArrayList<Long> c=new ArrayList<>();for(int i=1;i*i<=t;i++) {if(t%i==0) {if(i*i!=t) {c.add(t/i);}c.add((long)i);}}return c;}private static void bubunwa() {int N=sc.nextInt();int K=sc.nextInt();int a[]=sc.nextIntArray(N, false);boolean dp[] =new boolean[K+1];Arrays.fill(dp, false);dp[0]=true;for(int i=0;i<N;i++) {for(int x=K-a[i];x>=0;x--) {if(dp[x])dp[x+a[i]]=true;}}p(dp[K] ? "Yes":"No");}private static String bitToString(int i) {String T="";for(int j=0;j<2;j++) {//if(i>>j==0)break;if((1&i>>j)==1) {T+="1";}else T+="0";}return (i+" "+T);}/*********************************************************************///target以下までの値のindexを返す//target以上が欲しいときは返り値+1すればいい//0-indexで個数を求めるときはさらにindex+1する必要ありprivate static int lower_bound(long a[],long target) {//p(target+ " "+Arrays.toString(a));if(a[0]>target)return -1;//最後の値がtarget以下であるときは最後のindexを返す。//target以上が欲しいときは注意する必要ありif(a[a.length-1]<=target) return a.length-1;int S=-1;int E=a.length;while(S<E) {int G=(S+E)/2;if(G+1==a.length) {G--;}//未満にしたいときは=の場所を変えるif(a[G]<=target&&a[G+1]>target) {return G;}else if(a[G]<=target){S=G;}else if(a[G]>target) {E=G;}}return -1;}static String nextPermutation(String s) {ArrayList<Character> list=new ArrayList<>();for(int i=0;i<s.length();i++) {list.add(s.charAt(i));}int pivotPos=-1;char pivot=0;for(int i=list.size()-2;i>=0;i--) {if(list.get(i)<list.get(i+1)) {pivotPos=i;pivot=list.get(i);break;}}if(pivotPos==-1&&pivot==0) {return "Final";}int L=pivotPos+1,R=list.size()-1;int minPos=-1;char min =Character.MAX_VALUE;for(int i=R;i>=L;i--) {if(pivot<list.get(i)) {if(list.get(i)<min) {min=list.get(i);minPos=i;}}}Collections.swap(list, pivotPos, minPos);Collections.sort(list.subList(L, R+1));StringBuilder sb=new StringBuilder();for(int i=0;i<list.size();i++) {sb.append(list.get(i));}return sb.toString();}private static long[][] com;private static void nCr() {int MAX = 3001;com= new long[MAX][MAX];for(int i = 0; i < MAX; i++)com[i][0] = 1;for(int i = 1; i < MAX; i++) {for(int j = 1; j <= i; j++) {com[i][j] = com[i-1][j-1] + com[i-1][j];com[i][j] %= mod;}}}static void p(String ans) {out.println(ans);};static void p(int ans) {out.println(ans);};static void p() {out.println();};static void p(long ans) {out.println(ans);};static void p(double ans) {out.println(ans);};static void pn(String ans) {out.print(ans);};static void pn(int ans) {out.print(ans);};static void pn() {out.print("");};static void pn(long ans) {out.print(ans);};static void pn(double ans) {out.print(ans);};static class FastScanner {private final InputStream in = System.in;private final byte[] buffer = new byte[1024];private int ptr = 0;private int buflen = 0;private boolean hasNextByte() {if (ptr < buflen) {return true;} else {ptr = 0;try {buflen = in.read(buffer);} catch (IOException e) {e.printStackTrace();}if (buflen <= 0) {return false;}}return true;}private int readByte() {if (hasNextByte()) return buffer[ptr++];else return -1;}private static boolean isPrintableChar(int c) {return 33 <= c && c <= 126;}private void skipUnprintable() {while (hasNextByte() && !isPrintableChar(buffer[ptr])) ptr++;}public boolean hasNext() {skipUnprintable();return hasNextByte();}public String next() {if (!hasNext()) throw new NoSuchElementException();StringBuilder sb = new StringBuilder();int b = readByte();while (isPrintableChar(b)) {sb.appendCodePoint(b);b = readByte();}return sb.toString();}public long nextLong() {if (!hasNext()) throw new NoSuchElementException();long n = 0;boolean minus = false;int b = readByte();if (b == '-') {minus = true;b = readByte();}if (b < '0' || '9' < b) {throw new NumberFormatException();}while (true) {if ('0' <= b && b <= '9') {n *= 10;n += b - '0';} else if (b == -1 || !isPrintableChar(b)) {return minus ? -n : n;} else {throw new NumberFormatException();}b = readByte();}}public int nextInt() {return (int) nextLong();}public double nextDouble(){return Double.parseDouble(next());}public int[] nextIntArray(int N, boolean oneBased) {if (oneBased) {int[] array = new int[N + 1];for (int i = 1; i <= N; i++) {array[i] = sc.nextInt();}return array;} else {int[] array = new int[N];for (int i = 0; i < N; i++) {array[i] = sc.nextInt();}return array;}}public long[] nextLongArray(int N, boolean oneBased) {if (oneBased) {long[] array = new long[N + 1];for (int i = 1; i <= N; i++) {array[i] = sc.nextLong();}return array;} else {long[] array = new long[N];for (int i = 0; i < N; i++) {array[i] = sc.nextLong();}return array;}}}}