洛谷P1161
开灯 - 洛谷
代码区:
#include<stdio.h>
int ans[2000005]={1}; //1为关
int main(){int n;scanf("%d",&n);double arry[n][2];//此处最好用双精度浮点数,单精度浮点数的精确度够高对于此题来说,第一次没全对就是因为精度问题for(int i=0;i<n;i++){for(int j=0;j<2;j++){scanf("%lf",&arry[i][j]);}}float max=0.00;//找出编号的最大范围for(int i=0;i<n;i++){if(max<=arry[i][0]*1.0*arry[i][1]){max=arry[i][0]*1.0*arry[i][1];}}//初始化灯全关for(int i=0;i<=(int)max;i++){ans[i]=1;}//如果进行一次操作就对1取反for(int i=0;i<n;i++){for(int k=1;k<=(int)arry[i][1];k++){int t=(int)(arry[i][0]*1.00*k);//向下取整用int进行强制转换ans[t]=-ans[t];}}//最后只有一盏灯是开着的,-1表示开着的状态for(int i=0;i<=(int)max;i++){ //注意最大值这里可以取等if(ans[i]==-1){printf("%d",i);}}return 0;
}
欢迎各位读者提出意见。
(菜菜洛谷奋斗小日记)