結果

問題 No.990 N×Mマス計算(Kの倍数)
ユーザー fgwiebfaoish
提出日時 2020-02-14 22:18:08
言語 C#(csc)
(csc 3.9.0)
結果
WA  
実行時間 -
コード長 4,050 bytes
コンパイル時間 4,962 ms
コンパイル使用メモリ 118,368 KB
実行使用メモリ 46,800 KB
最終ジャッジ日時 2024-11-16 00:49:40
合計ジャッジ時間 12,443 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 15 WA * 2 TLE * 2
権限があれば一括ダウンロードができます
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #
プレゼンテーションモードにする

using System;
using System.Collections.Generic;
using System.Collections;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.IO;
using System.Reflection;
using static System.Math;
using System.Numerics;
static class Program{
const int mod=(int)1e9+7;
static void Main(){
Sc sc=new Sc();
var s=sc.Ia;
var a=new long[s[1]];
var b=new long[s[0]];
var t=sc.Sa;
long ans=0;
var pf=new Pf(s[2]);
var hs=new Dictionary<long,int>();
for(int i = 0;i<s[1];i++) {
a[i]=long.Parse(t[i+1]);
if(t[0]=="+"){
long p=a[i]%s[2];
if(hs.ContainsKey(p)){hs[p]++;}
else{hs.Add(p,1);}
}
else{
var pfe=new Pf(a[i]);
long p=1;
pf.Get((k,v)=>{
if(pfe.hs.ContainsKey(k)){
//Console.WriteLine("{0}:{1} {2}",k,v,pfe.hs[k]);
if(pfe.hs[k]<v){
p*=k*(v-pfe.hs[k]);
}
}
else{
p*=k*v;
//Console.WriteLine("{0}:{1} {2}",k,v,0);
}
});
//Console.WriteLine(p);
if(hs.ContainsKey(p)){hs[p]++;}
else{hs.Add(p,1);}
}
}
Array.Sort(a);
for(int i = 0;i<s[0];i++) {
b[i]=sc.I;
if(t[0]=="+"){
long p=b[i]%s[2];
p=(s[2]-p)%s[2];
if(hs.ContainsKey(p)){ans+=hs[p];}
}
else{
foreach(var e in hs){
//Console.WriteLine("e {0}:{1}",e.Key,e.Value);
if(b[i]%e.Key==0){ans+=e.Value;}
}
}
}
Console.WriteLine(ans);
}
}
public class Pf{
public Dictionary<long,int> hs=new Dictionary<long,int>();
public Pf(long n){
if(n%2==0){
int p=0;
while((n&1)==0){n>>=1;p++;}
hs.Add(2,p);
}
var q=(int)Sqrt(n)+1;
for(int i=3;n!=1&&i<q;i+=2){
if(n%i==0){
int p=0;
while(n%i==0){n/=i;p++;}
q=(int)Sqrt(n)+1;
hs.Add(i,p);
}
}
if(n!=1){hs.Add(n,1);}
}
public void Get(Action<long,int> f){
foreach(var e in hs){f(e.Key,e.Value);}
}
}
public class Sc{
public int I{get{return int.Parse(Console.ReadLine());}}
public long L{get{return long.Parse(Console.ReadLine());}}
public double D{get{return double.Parse(Console.ReadLine());}}
public string S{get{return Console.ReadLine();}}
public int[] Ia{get{return Array.ConvertAll(Console.ReadLine().Split(),int.Parse);}}
public long[] La{get{return Array.ConvertAll(Console.ReadLine().Split(),long.Parse);}}
public double[] Da{get{return Array.ConvertAll(Console.ReadLine().Split(),double.Parse);}}
public string[] Sa{get{return Console.ReadLine().Split();}}
public object[] Oa{get{return Console.ReadLine().Split();}}
public int[] Ia2{get{return Array.ConvertAll(("0 "+Console.ReadLine()+" 0").Split(),int.Parse);}}
public int[] Ia3(int a){return Array.ConvertAll((a.ToString()+" "+Console.ReadLine()).Split(),int.Parse);}
public int[] Ia3(bool a,int b,bool c,int d){return Array.ConvertAll(((a?b.ToString()+" ":"")+Console.ReadLine()+(c?" "+d.ToString():"")).Split
        (),int.Parse);}
public long[] La2{get{return Array.ConvertAll(("0 "+Console.ReadLine()+" 0").Split(),long.Parse);}}
public long[] La3(int a){return Array.ConvertAll((a.ToString()+" "+Console.ReadLine()).Split(),long.Parse);}
public long[] La3(bool a,int b,bool c,int d){return Array.ConvertAll(((a?b.ToString()+" ":"")+Console.ReadLine()+(c?" "+d.ToString():"")).Split
        (),long.Parse);}
public double[] Da2{get{return Array.ConvertAll(("0 "+Console.ReadLine()+" 0").Split(),double.Parse);}}
public double[] Da3(int a){return Array.ConvertAll((a.ToString()+" "+Console.ReadLine()).Split(),double.Parse);}
public double[] Da3(bool a,int b,bool c,int d){return Array.ConvertAll(((a?b.ToString()+" ":"")+Console.ReadLine()+(c?" "+d.ToString():"")).Split
        (),double.Parse);}
public T[] Arr<T>(int n,Func<T> f){var a=new T[n];for(int i=0;i<n;i++){a[i]=f();}return a;}
public T[] Arr<T>(int n,Func<int,T> f){var a=new T[n];for(int i=0;i<n;i++){a[i]=f(i);}return a;}
public T[] Arr<T>(int n,Func<string[],T> f){var a=new T[n];for(int i=0;i<n;i++){a[i]=f(Console.ReadLine().Split());}return a;}
public T[] Arr<T>(int n,Func<int,string[],T> f){var a=new T[n];for(int i=0;i<n;i++){a[i]=f(i,Console.ReadLine().Split());}return a;}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0