目录
4861. 构造数列 - 贪心ac
题目:
我们规定如果一个正整数满足除最高位外其它所有数位均为 0,则称该正整数为圆数。
例如,1,8,900,70,5000 都是圆数,120,404,333,8008 都不是圆数。
给定一个正整数 n,请你构造一个圆数数列,要求:
- 数列中所有元素相加之和恰好为 n
- 数列长度尽可能短
思路:
像5678这种,拆分输出5000,600,70,8
如果x%10=0,则不输出
import java.util.*;
class Main
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
while(n-->0)
{
int x=sc.nextInt();
int cnt=0,res=0;
List<Integer> a=new ArrayList<>();
while(x>0)
{
int t=x%10;
if(t!=0)
{
a.add((int)(t*Math.pow(10,cnt)));
res++;
}
cnt++;
x/=10;
}
System.out.println(res);
for(int p:a) System.out.print(p+" ");
System.out.println();
}
}
}
4862. 浇花 - 差分ac
import java.util.*;
class Main
{
static int N=100010;
static int[] b=new int[N],a=new int[N];
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt(),m=sc.nextInt();
for(int i=1;i<=n;i++)
{
a[i]=0;
b[i]=a[i]-a[i-1];
}
while(m-->0)
{
int l=sc.nextInt(),r=sc.nextInt();
b[l]++;
b[r+1]--;
}
for(int i=1;i<=n;i++) b[i]+=b[i-1];
int i=1;
for(i=1;i<=n;i++)
if(b[i]>1||b[i]==0)
{
System.out.print(i+" "+b[i]);
return;
}
if(i==n+1) System.out.print("OK");
}
}