赞
踩
- import java.io.*;
- import java.math.BigInteger;
- import java.util.Arrays;
- import java.util.BitSet;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.PriorityQueue;
- import java.util.Queue;
- import java.util.Random;
- import java.util.Stack;
- import java.util.StringTokenizer;
- import java.util.Vector;
-
-
-
-
-
-
-
- public class Main{
- static long md=(long)998244353;
- static long Linf=Long.MAX_VALUE/2;
- static int inf=Integer.MAX_VALUE/2;
-
-
-
- public static void main(String[] args) throws IOException{
- AReader input=new AReader();
- PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
-
- int n=input.nextInt();
- int[] a=new int[n+1];
- HashMap<Integer, Integer> hs=new HashMap<Integer, Integer>();
- long ans=0;
- for(int i=1;i<=n;++i) {
- a[i]=input.nextInt();
- if(a[i]==0) {
- continue;
- }
- int t=a[i];
- int y=(int)Math.sqrt(a[i]);
- while(y>0) {
- int z=y*y;
- if(t%z==0) {
- t/=z;
- break;
- }
- y--;
- }
-
- if(hs.get(t)!=null) {
- int p=hs.get(t);
- ans+=p;
- hs.put(t, p+1);
- }else {
- hs.put(t, 1);
- }
- }
- int zero=0;
- for(int i=1;i<=n;++i) {
- if(a[i]==0) {
- ans+=i-1;
- zero++;
- }else {
- ans+=zero;
- }
- }
- out.print(ans);
-
- out.flush();
- out.close();
- }
- //System.out.println();
- //out.println();
- //String o="abcdefghijklmnopqrstuvwxyz";
- //char[] op=o.toCharArray();
- static
- class AReader{
- BufferedReader bf;
- StringTokenizer st;
- BufferedWriter bw;
-
- public AReader(){
- bf=new BufferedReader(new InputStreamReader(System.in));
- st=new StringTokenizer("");
- bw=new BufferedWriter(new OutputStreamWriter(System.out));
- }
- public String nextLine() throws IOException{
- return bf.readLine();
- }
- public String next() throws IOException{
- while(!st.hasMoreTokens()){
- st=new StringTokenizer(bf.readLine());
- }
- return st.nextToken();
- }
- public char nextChar() throws IOException{
- //确定下一个token只有一个字符的时候再用
- return next().charAt(0);
- }
- public int nextInt() throws IOException{
- return Integer.parseInt(next());
- }
- public long nextLong() throws IOException{
- return Long.parseLong(next());
- }
- public double nextDouble() throws IOException{
- return Double.parseDouble(next());
- }
- public float nextFloat() throws IOException{
- return Float.parseFloat(next());
- }
- public byte nextByte() throws IOException{
- return Byte.parseByte(next());
- }
- public short nextShort() throws IOException{
- return Short.parseShort(next());
- }
- public BigInteger nextBigInteger() throws IOException{
- return new BigInteger(next());
- }
- public void println() throws IOException {
- bw.newLine();
- }
- public void println(int[] arr) throws IOException{
- for (int value : arr) {
- bw.write(value + " ");
- }
- println();
- }
- public void println(int l, int r, int[] arr) throws IOException{
- for (int i = l; i <= r; i ++) {
- bw.write(arr[i] + " ");
- }
- println();
- }
- public void println(int a) throws IOException{
- bw.write(String.valueOf(a));
- bw.newLine();
- }
- public void print(int a) throws IOException{
- bw.write(String.valueOf(a));
- }
- public void println(String a) throws IOException{
- bw.write(a);
- bw.newLine();
- }
- public void print(String a) throws IOException{
- bw.write(a);
- }
- public void println(long a) throws IOException{
- bw.write(String.valueOf(a));
- bw.newLine();
- }
- public void print(long a) throws IOException{
- bw.write(String.valueOf(a));
- }
- public void println(double a) throws IOException{
- bw.write(String.valueOf(a));
- bw.newLine();
- }
- public void print(double a) throws IOException{
- bw.write(String.valueOf(a));
- }
- public void print(char a) throws IOException{
- bw.write(String.valueOf(a));
- }
- public void println(char a) throws IOException{
- bw.write(String.valueOf(a));
- bw.newLine();
- }
- }
- }
-
- import java.io.*;
- import java.math.BigInteger;
- import java.util.Arrays;
- import java.util.BitSet;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.PriorityQueue;
- import java.util.Queue;
- import java.util.Random;
- import java.util.Stack;
- import java.util.StringTokenizer;
- import java.util.Vector;
-
-
-
-
-
-
-
- public class Main{
- static long md=(long)998244353;
- static long Linf=Long.MAX_VALUE/2;
- static int inf=Integer.MAX_VALUE/2;
-
- static
- class Edge{
- int fr,to,nxt;
- long l,d,k,c;
- public Edge(int u,int v,long L,long D,long K,long C) {
- fr=u;
- to=v;
- l=L;
- d=D;
- c=C;
- k=K;
- }
- }
- static Edge[] e;
- static int[] head;
- static int cnt;
- static void addEdge(int fr,int to,long l,long d,long k,long c) {
- cnt++;
- e[cnt]=new Edge(fr, to, l, d, k, c);
- e[cnt].nxt=head[fr];
- head[fr]=cnt;
- }
-
- static
- class Node{
- int x;
- long dis;
- public Node(int X,long D) {
- x=X;
- dis=D;
- }
- }
-
-
- public static void main(String[] args) throws IOException{
- AReader input=new AReader();
- PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
- int n=input.nextInt();
- int m=input.nextInt();
- e=new Edge[m+1];
- head=new int[n+1];
- cnt=0;
- for(int i=1;i<=m;++i) {
- long l=input.nextLong();
- long d=input.nextLong();
- long k=input.nextLong();
- long c=input.nextLong();
- int u=input.nextInt();
- int v=input.nextInt();
- addEdge(v, u, l, d, k, c);
- }
- PriorityQueue<Node> q=new PriorityQueue<Node>((o1,o2)->{
- if(o2.dis-o1.dis>0)return 1;
- else if(o2.dis-o1.dis<0)return -1;
- else return 0;
- });
-
- long[] dis=new long[n+1];
- Arrays.fill(dis, -1);
- dis[n]=Linf;
- q.add(new Node(n, Linf));
- while(!q.isEmpty()) {
- Node now=q.peek();
- q.poll();
- int x=now.x;
- if(x!=n&&dis[x]>=now.dis)continue;
- dis[x]=now.dis;
- for(int i=head[x];i>0;i=e[i].nxt) {
- int v=e[i].to;
- long c=e[i].c;
- long may=dis[x]-c;
- long l=e[i].l;
- long d=e[i].d;
- long k=e[i].k;
- if(may>=l) {
- may=l+Math.min((may-l)/d, k-1)*d;
- q.add(new Node(v, may));
- }
- }
- }
- for(int i=1;i<n;++i) {
- if(dis[i]==-1) {
- out.println("Unreachable");
- }else out.println(dis[i]);
- }
-
- out.flush();
- out.close();
- }
- //System.out.println();
- //out.println();
- static
- class AReader{
- BufferedReader bf;
- StringTokenizer st;
- BufferedWriter bw;
-
- public AReader(){
- bf=new BufferedReader(new InputStreamReader(System.in));
- st=new StringTokenizer("");
- bw=new BufferedWriter(new OutputStreamWriter(System.out));
- }
- public String nextLine() throws IOException{
- return bf.readLine();
- }
- public String next() throws IOException{
- while(!st.hasMoreTokens()){
- st=new StringTokenizer(bf.readLine());
- }
- return st.nextToken();
- }
- public char nextChar() throws IOException{
- //确定下一个token只有一个字符的时候再用
- return next().charAt(0);
- }
- public int nextInt() throws IOException{
- return Integer.parseInt(next());
- }
- public long nextLong() throws IOException{
- return Long.parseLong(next());
- }
- public double nextDouble() throws IOException{
- return Double.parseDouble(next());
- }
- public float nextFloat() throws IOException{
- return Float.parseFloat(next());
- }
- public byte nextByte() throws IOException{
- return Byte.parseByte(next());
- }
- public short nextShort() throws IOException{
- return Short.parseShort(next());
- }
- public BigInteger nextBigInteger() throws IOException{
- return new BigInteger(next());
- }
- public void println() throws IOException {
- bw.newLine();
- }
- public void println(int[] arr) throws IOException{
- for (int value : arr) {
- bw.write(value + " ");
- }
- println();
- }
- public void println(int l, int r, int[] arr) throws IOException{
- for (int i = l; i <= r; i ++) {
- bw.write(arr[i] + " ");
- }
- println();
- }
- public void println(int a) throws IOException{
- bw.write(String.valueOf(a));
- bw.newLine();
- }
- public void print(int a) throws IOException{
- bw.write(String.valueOf(a));
- }
- public void println(String a) throws IOException{
- bw.write(a);
- bw.newLine();
- }
- public void print(String a) throws IOException{
- bw.write(a);
- }
- public void println(long a) throws IOException{
- bw.write(String.valueOf(a));
- bw.newLine();
- }
- public void print(long a) throws IOException{
- bw.write(String.valueOf(a));
- }
- public void println(double a) throws IOException{
- bw.write(String.valueOf(a));
- bw.newLine();
- }
- public void print(double a) throws IOException{
- bw.write(String.valueOf(a));
- }
- public void print(char a) throws IOException{
- bw.write(String.valueOf(a));
- }
- public void println(char a) throws IOException{
- bw.write(String.valueOf(a));
- bw.newLine();
- }
- }
- }
-
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。